使用 PHP MySQL 调试提交注释


Submitting Comments using PHP MySQL debug

只是想知道是否有人可以指出我下面的代码出了什么问题。我正在尝试从表单中收集文本并用文本更新数据库中的字段。

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

对,从顶部开始。 isset返回一个布尔值,所以$SubmitComments只等于真或假,它永远不会等于 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';

让你的所有评论都只是"屁股"这个词,与窃取用户名/密码、破坏数据库等相比,这只是一种幽默幼稚的攻击