使用PHP MySQL调试提交评论

时间:2015-02-04 14:31:26

标签: php html mysql

只是想知道是否有人可以指出我在下面的代码出错的地方。我试图从表单中收集文本并使用文本更新数据库中的字段。

我已经单独测试了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>

1 个答案:

答案 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';

让你的所有评论都只是“屁股”这个词,而这只是一个幽默的幼稚攻击,相比之下,窃取用户名/密码,捣毁数据库等等