只是想知道是否有人可以指出我在下面的代码出错的地方。我试图从表单中收集文本并使用文本更新数据库中的字段。
我已经单独测试了SQL语句,它正在更新列,但似乎是PHP语法的问题,因为当我点击提交按钮时,它只会插入' 1'进入专栏。
PHP:
$SubmitComments = isset($_POST['SubmitComments']);
$AddComment = isset($_POST['AddComment']);
if ($SubmitComments){
mysql_query ("UPDATE `table` SET `column` = '$AddComment' WHERE `column` = '$.....'") or die(mysql_error());
echo 'Comment added';
}
HTML:
<tr>
<td>Add Comment</td>
<td align="center"><form name="form1" method="POST" action=""><input name="AddComment" type="text" id="AddComment" autocomplete="off" placeholder="Add comments..." size="45px"><br />
<input type="submit" name="SubmitComments" id="SubmitComments" value="Submit"></form></td>
</tr>
答案 0 :(得分:0)
是的,从顶部开始。 isset
返回一个bool,因此$SubmitComments
只会等于true或false,它永远不会等于POST变量(与$AddComment
相同)。请考虑一下:
if(isset($_POST['SubmitComments'])&&isset($_POST['AddComment']))
{
$SubmitComments = $_POST['SubmitComments'];
$AddComment = $_POST['AddComment'];
//Rest of Code
}
其次,表名和列名不需要单引号。最后,正如评论中所述,考虑使用MySQLi,就像您的脚本最终确实有效一样,一个格式错误的评论将擦除您的整个数据库。
示例:
如果他们的评论只是butts';--
那么它将成为SQL:
UPDATE table SET column = 'butts';--' WHERE column = '$.....'
相当于:
UPDATE table SET column = 'butts';
让你的所有评论都只是“屁股”这个词,而这只是一个幽默的幼稚攻击,相比之下,窃取用户名/密码,捣毁数据库等等