我知道我只是错过了这里最简单的事情,但似乎无法弄明白。
所以这适用于这段代码,但改变了数据库的所有行,而不是只有页面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注入,并研究如何更好地保护我的网站。
答案 0 :(得分:3)
请在创建SQL语句之前转义字符串。输入值中的各种字符都会破坏您的查询并打开一个巨大的安全漏洞。这可能是你的问题。请查看此帖子了解更多信息How can I prevent SQL injection in PHP?
简而言之,您的作业将如下所示:
$first_name = mysql_real_escape_string($_POST['first_name']);
echo $sql;
在运行之前发布输出内容。