1

'字段列表'中的未知列'Abu' 所以这是一个小评论框,我正在处理 http://abu.cpvp.net/cupcakes.php我为名称字段输入名称并为评论字段添加评论它有效????这是我的脚本

$name=$_POST['name']; 
$comment=$_POST['comment']; 
$submit=$_POST['post'];
if($_POST['name'] && $_POST['comment']  && $submit) 
{ 
    $insert=mysql_query("INSERT INTO `comment (`name`,`comment`) 
                         VALUES ($name,$comment) " ) or die(mysql_error()); 
} 
else 
{ 
    echo "please fill out all fields"; 
}
4

3 回答 3

2

如果列的数据类型是字符串,那么值应该用单引号括起来,因为它们是字符串文字,

INSERT INTO comment (name,comment) VALUES ('$name','$comment')

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-05-02T01:23:14.127 回答
0

您需要将字符串放在引号中:

$insert=mysql_query("INSERT INTO comment 
(name,comment) 
VALUES ($name,$comment) " ) 

应该

$insert=mysql_query("INSERT INTO comment 
(name,comment) 
VALUES ('$name','$comment') " ) 

请不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

您也对SQL 注入持开放态度

于 2013-05-02T01:23:31.937 回答
0
INSERT INTO comment (name,comment) VALUES ('$name','$comment')

将解决您的问题.. 但是其他开发人员可能已经注意到但没有指出.. 您还没有关闭 SQL 查询的反引号:

INSERT INTO `comment 

应该:

INSERT INTO `comment`

对列/表/模式名称使用​​反引号没有任何问题。事实上,建议使用它们,以最大程度地减少遇到SQL 保留字的风险。如果它们正确打开/关闭

于 2013-05-02T01:34:43.200 回答