<?и не работает! пишет: Parse error: syntax error, unexpected T_STRING in Z:\home\test.ru\www\save_changes.php on line 11 ((
include('bd.inc');
$id = $_SESSION['id'];
$name = $_POST['name'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$rpass = $_POST['rpass'];
if (($pass)==($rpass)){
mysql_connect($host,$user,$pass_bd);
mysql_db_query("test");
UPDATE users;
SET name = $name;
SET email = $email;
SET pass = $pass;
WHERE id = $id;
} else {
$result = "Ошибка! Указанные пароли не совпадают!";
}
?>
Спустя 5 минут, 25 секунд (13.11.2010 - 13:49) UnWind написал(а):
Все правильно он тебе пишет.
SQL запросы делаются внутри mysql_query();
Т.е.
К тому же, зачем несколько раз делать SET ?
Делается это по другому, а именно:
id в этом случае присваевается автоматически.
Так же можно опять же не описывать каждый столбец со значением, а сделать так:
И так же что бы выбрать базу данных, нужно указывать не mysql_query_db();, а mysql_select_db();
И в результате получиться вот так:
В зависимости конечно от структуры таблицы, нужно расставить правильно значения, или воспользоватсья вторым вариантом запроса.
Хотя и делать постоянно подключение к БД там, где нужно выполнить запрос не стоит, а лучше сделать вот так:
Листинг файла mysql_connect.php
Листинг файла index.php
К тому же зачем индексировать пользователей по идентификатору их ссесий ?
Ведь можно создать столбец id с присваеваемым автоматически уникальным идентификатором id.
Т.е. вот таблица:
Сей код, гораздо удобен, читабелен, гибок и практичен)
SQL запросы делаются внутри mysql_query();
Т.е.
mysql_query("UPDATE users;
SET name = $name;
SET email = $email;
SET pass = $pass;
WHERE id = $id;
");
К тому же, зачем несколько раз делать SET ?
Делается это по другому, а именно:
UPDATE users SET name=$name, email=$email, pass=$pass; commit;
id в этом случае присваевается автоматически.
Так же можно опять же не описывать каждый столбец со значением, а сделать так:
UPDATE users SET VALUES(NULL, $name, $email, $pass); commit;
И так же что бы выбрать базу данных, нужно указывать не mysql_query_db();, а mysql_select_db();
И в результате получиться вот так:
<?
include('bd.inc');
$id = $_SESSION['id'];
$name = $_POST['name'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$rpass = $_POST['rpass'];
if (($pass)==($rpass)){
mysql_connect($host,$user,$pass_bd);
mysql_select_db("test");
mysql_query("UPDATE users SET VALUES(NULL, $name, $email, $pass); COMMIT;");
} else {
$result = "Ошибка! Указанные пароли не совпадают!";
}
?>
В зависимости конечно от структуры таблицы, нужно расставить правильно значения, или воспользоватсья вторым вариантом запроса.
Хотя и делать постоянно подключение к БД там, где нужно выполнить запрос не стоит, а лучше сделать вот так:
Листинг файла mysql_connect.php
define(HOST_NAME, 'localhost');
define(USER_NAME, 'Имя пользователя');
define(USER_PASSWORD, 'Пароль пользователя');
define(DB_NAME, 'Имя базы данных');
$connect = mysql_connect(HOST_NAME, USER_NAME, USER_PASSWORD);
mysql_select_db(DB_NAME);
?>
Листинг файла index.php
<?
include('mysql_connect.php');
$info_user = array(
'name' => $_POST['name'],
'email' => $_POST['email'],
'pass' => $_POST['pass'],
'rpass' => $_POST['rpass']
);
if ($info_user['pass'] == $info_user['rpass']){
mysql_query("UPDATE users SET VALUES(NULL, $info_user['name'], $info_user['email'], $info_user['pass']); COMMIT;", $connect);
} else {
$result = "Ошибка! Указанные пароли не совпадают!";
}
?>
К тому же зачем индексировать пользователей по идентификатору их ссесий ?
Ведь можно создать столбец id с присваеваемым автоматически уникальным идентификатором id.
Т.е. вот таблица:
CREATE TABLE users (
id INT AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
pass VARCHAR(255) NOT NULL,
PRIMARY_KEY(id)
);
Сей код, гораздо удобен, читабелен, гибок и практичен)
Спустя 2 часа, 46 минут, 30 секунд (13.11.2010 - 16:35) alex107 написал(а):
и все равно у меня ничего не работает!! (((( описываю суть
пользователь заходит на сайт > авторизуется > заходит в раздел с изменением настроек профиля > изменяет > нажимает сохранить. переходит на страницу где скрипт должен обновить настройки профиля в бд.
база выглядит так:
id name email pass
информацию нужно обновить в том ID который принадлежит авторизованному пользователю.
т.е. я зашел авторизовался мой ID 1 > я изменил имя в настройках > скрипт должен обновить поле name в id 1
надеюсь понятно объяснил ))))
ну так вот сам написал скрипт, он не работает, скрипт предложенный выше тоже не работает... ((((
пользователь заходит на сайт > авторизуется > заходит в раздел с изменением настроек профиля > изменяет > нажимает сохранить. переходит на страницу где скрипт должен обновить настройки профиля в бд.
база выглядит так:
id name email pass
информацию нужно обновить в том ID который принадлежит авторизованному пользователю.
т.е. я зашел авторизовался мой ID 1 > я изменил имя в настройках > скрипт должен обновить поле name в id 1
надеюсь понятно объяснил ))))
ну так вот сам написал скрипт, он не работает, скрипт предложенный выше тоже не работает... ((((
<?при выше указанном скрипте ошибок нет, но и в БД ничего не меняется... (((
session_start();
include('bd.inc');
$id = $_SESSION['id'];
$name = $_POST['name'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$rpass = $_POST['rpass'];
if (($pass)==($rpass))
{ @mysql_connect($host, $user, $pass_bd)or die("Could not connect to MySQL server!");
@mysql_select_db("ukads") or die("Could not select company database!");
mysql_query("UPDATE users SET name=$name, email=$email, pass=$pass; commit");
mysql_close( );
$result = "хм, странно!";
} else {
$result = "Ошибка! Указанные пароли не совпадают!";
}
?>
Спустя 28 минут, 58 секунд (13.11.2010 - 17:04) DmitryOpalev написал(а):
echo mysql_error();
Должна появится ошибка :)
Спустя 1 минута, 1 секунда (13.11.2010 - 17:05) Basili4 написал(а):
вот
mysql_query("UPDATE users SET name='$name', email='$email', pass='$pass'");
и кто такой commit почему не знаю ??? ненужен он.
mysql_query("UPDATE users SET name='$name', email='$email', pass='$pass'");
и кто такой commit почему не знаю ??? ненужен он.
Спустя 52 секунды (13.11.2010 - 17:06) DmitryOpalev написал(а):
Цитата |
mysql_query("UPDATE users SET name='$name', email='$email', pass='$pass'"); |
Где тут commit?...
Спустя 44 секунды (13.11.2010 - 17:07) Nikitian написал(а):
mysql_query("
UPDATE users
SET
name='".mysql_escape_string($name)."',
email='".mysql_escape_string($email)."',
pass='".mysql_escape_string($pass)."'
where
id='".mysql_escape_string($id)."'
limit 1");
Спустя 18 секунд (13.11.2010 - 17:07) Basili4 написал(а):
DmitryOpalev
вот
вот
Цитата (alex107 @ 13.11.2010 - 17:35) |
e=$name, email=$email, pass=$pass; commit"); |
Спустя 1 минута, 1 секунда (13.11.2010 - 17:08) alex107 написал(а):
Basili4 ты просто мастер !!!! thx!! )))) оказывается надо было про ' нахерачить ))) держи + в карму! ))
а commit я совсем убрал ))
а commit я совсем убрал ))
Спустя 9 часов, 15 минут, 26 секунд (14.11.2010 - 02:24) UnWind написал(а):
Простите за COMMIT - у нас просто автоматический на Oracle не стоит, по привычке добавил)
Цитата |
и кто такой commit почему не знаю ??? ненужен он. |
COMMIT:
- сделать «постоянными» все изменения, сделанные в текущей транзакции (реально данные могут быть изменены несколько позже)
- очистить все точки сохранения данной транзакции
- завершить транзакцию
- освободить все блокировки данной транзакции