添加WHERE CLAUSE时,$ SQL UPDATE不起作用

时间:2011-11-01 22:18:18

标签: mysql sql sql-update row

我知道我只是错过了这里最简单的事情,但似乎无法弄明白。

所以这适用于这段代码,但改变了数据库的所有行,而不是只有页面ID的那一行......

 <?   $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'>然而这显然搞砸了获取ID因为没有想法,所以即使那个页面是什么时候提交.php?id = 4当你点击提交时它就不会运行因为id会消失。

将代码切换为<form method='post' enctype='multipart/form-data' action='#'>只是诀窍。

感谢帮助人员,我正在研究sql注入,并研究如何更好地保护我的网站。

1 个答案:

答案 0 :(得分:3)

请在创建SQL语句之前转义字符串。输入值中的各种字符都会破坏您的查询并打开一个巨大的安全漏洞。这可能是你的问题。请查看此帖子了解更多信息How can I prevent SQL injection in PHP?

enter image description here

简而言之,您的作业将如下所示:

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

echo $sql;在运行之前发布输出内容。