$ SQL UPDATE не работает при добавлении WHERE CLAUSE - PullRequest
2 голосов
/ 02 ноября 2011

Я знаю, что я просто упускаю простейшую вещь здесь, но, кажется, не могу понять это.

, так что это работает с этим кодом, но изменяет все строки базы данных, а не только строку с идентификатором страницы....

 <?   $pageid= $_GET["id"];
 $sql = "SELECT id, first_name, last_name, email, bio, job, job2, job3 FROM `".weapons."`            WHERE id = $pageid"; 


if(isset($_POST['Update']))
{

 $first_name = $_POST['first_name'];
 $last_name = $_POST['last_name'];
 $job = $_POST['job'];
 $job2 = $_POST['job2'];
 $job3 = $_POST['job3'];
 $bio = $_POST['bio'];
 $email = $_POST['email'];
 $sql = "UPDATE weapons SET first_name='$first_name', email='$email' , job='$job',      job2='$job2', job3='$job3', bio='$bio', last_name='$last_name'";
 if (@mysql_query($sql)) {
 echo('<p>Update Complete</p>');
  } else {
  echo('<p>Error updating: ' . mysql_error() . '</p>');
  }

 }else{   ...

однако при добавлении предложения WHERE, например, следующим образом

 $sql = "UPDATE weapons SET first_name='$first_name', email='$email' , job='$job',      job2='$job2', job3='$job3', bio='$bio', last_name='$last_name' WHERE id = $pageid";

Я получаю ошибку

Ошибка обновления: у вас есть ошибка в вашемСинтаксис SQL;проверьте руководство, которое соответствует вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' в строке 1

Любая помощь будет отличной, спасибо

РЕДАКТИРОВАТЬ

Я на самом деле пропустил очень простую вещь, что я изначально и предполагал, сначала у меня в форме было <form method='post' enctype='multipart/form-data' action='submit.php'> однако это явно испортило get id, потому что идея отсутствует, поэтому даже если эта страница былаsubmit.php? id = 4, когда вы нажмете на submit, он не запустится, потому что id пропал.

Переключение кода на <form method='post' enctype='multipart/form-data' action='#'> просто помогло.

Спасибо за помощь, ребятаи сейчас я изучаю инъекцию sql и работаю над тем, как лучше защитить свой сайт.

1 Ответ

3 голосов
/ 02 ноября 2011

Пожалуйста, избегайте строк, прежде чем создавать оператор SQL. Различные символы в ваших входных значениях сломают ваш запрос и откроют ОГРОМНУЮ дыру в безопасности. Это может быть вашей проблемой. Посмотрите на этот пост для получения дополнительной информации Как я могу предотвратить внедрение SQL в PHP?

enter image description here

Короче говоря, ваши назначения будут выглядеть так:

$first_name = mysql_real_escape_string($_POST['first_name']);

echo $sql; перед тем, как запустить его и опубликовать, что это выводит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...