Запрос обновления MySQL в PHP

Я создаю простую таблицу mysql, которая содержит идентификатор, имя, фамилию и адрес электронной почты. Код создания таблицы выглядит следующим образом:

$sql="CREATE TABLE users ( id int NOT NULL auto_increment, PRIMARY KEY(id), firstname varchar(20), lastname varchar(20), email varchar(40) )"; 

Работы по созданию таблицы, и у меня не было проблем. Моя проблема возникает, когда я пытаюсь обновить таблицу и пользовательскую информацию.

Мой запрос на обновление выглядит следующим образом:

 mysql_select_db(dustin,$con); $sql="UPDATE users SET firstname='".$_GET['fn']."',lastname='".$_GET['ln']."',email='".$_GET['emadd']"'"; $sherlock=mysql_query($sql,$con); 

По сути, я открываю файл, который позволяет пользователю редактировать хранимую информацию в элементах формы, а затем, когда выполняется запрос на обновление, он должен изменять информацию, содержащуюся в таблице.

mysql_error (); не выводит результат, и запрос UPDATE завершается с ошибкой.

Solutions Collecting From Web of "Запрос обновления MySQL в PHP"

 $sql="UPDATE users SET firstname='".$_GET['fn']."', lastname='".$_GET['ln']."',email='".$_GET['emadd']"'"; 

Давайте посмотрим … сделайте это.

 $sql="UPDATE `users` SET firstname='{$_GET['fn']}', lastname='{$_GET['ln']}', email='{$_GET['emadd']}'"; 

НО Я НЕ РЕКОМЕНДУЮ ЭТО !!!

Сначала очистите данные mysql_real_escape_string (), чтобы предотвратить SQL-инъекцию!

Например:

 $firstname = mysql_real_escape_string($_GET['fn']); $lastname = mysql_real_escape_string($_GET['ln']); $email = mysql_real_escape_string($_GET['emadd']); $sql="UPDATE `users` SET `firstname`='$firstname', `lastname`='$lastname', `email`='$email' WHERE ..."; mysql_query($sql); 

Кроме того, где ваше WHERE ?

Я не очень хорошо знаком с php, но вам может не хватать period :

 email='".$_GET['emadd'] ----------------------/\ 

Вам также не хватает предложения WHERE , поэтому вы обновите все записи.

В вашем запросе условие WHERE отсутствует …

каждый запрос на обновление требует, чтобы условие

WHERE id = nn может быть чем угодно

а также ошибка в запросе u miss. после $ _GET ['emadd']

Синтаксис error email='".$_GET['emadd']"'"; здесь вы забыли точку до "'" . Также это отвратительный код. Не используйте mysql use mysqli или PDO и подготовленные инструкции, чтобы избежать SQL-инъекции и сделать код более читаемым.

в вашем коде, где код отсутствует, а также в последнем из кода, который вы допустили, ваш запрос должен быть

 $sql="UPDATE users SET firstname='".$_GET['fn']."', lastname='".$_GET['ln']."', email='".$_GET['emadd']."' where condition"; 

вместо

 $sql="UPDATE users SET firstname='".$_GET['fn']."',lastname='".$_GET['ln']."',email='".$_GET['emadd']"'"; 

вы пропустите a . оператор в конце вашего запроса

В вашем запросе отсутствует WHERE-часть, unles, конечно же, вы не будете обновлять все записи.

 $sql="UPDATE users SET firstname='".$_GET['fn']."',lastname='".$_GET['ln']."',email='".$_GET['emadd']."' WHERE id = ".$_GET['id']; 

Кроме того, вы уже подготовили таблицу? Вы можете изменить INSERT на REPLACE, и это будет работать как с новыми, так и с обновленными линиями.

 $sql="REPLACE users SET firstname='".$_GET['fn']."',lastname='".$_GET['ln']."',email='".$_GET['emadd']."' WHERE id = ".$_GET['id'];