'字段列表'中的未知列'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";
}
答案 0 :(得分:2)
如果列的数据类型是字符串,那么该值应该用单引号括起来,因为它们是字符串文字,
INSERT INTO comment (name,comment) VALUES ('$name','$comment')
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 1 :(得分:0)
您需要将字符串放在引号中:
$insert=mysql_query("INSERT INTO comment
(name,comment)
VALUES ($name,$comment) " )
应该是
$insert=mysql_query("INSERT INTO comment
(name,comment)
VALUES ('$name','$comment') " )
Please, don't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
答案 2 :(得分:0)
INSERT INTO comment (name,comment) VALUES ('$name','$comment')
将解决您的问题..但其他开发人员可能已经注意到了,但没有指出..您还没有关闭SQL查询的反引号:
INSERT INTO `comment
应该是:
INSERT INTO `comment`
对列/表/模式名称使用反引号没有任何错误。事实上,建议使用它们,以最大程度地降低运行 SQL保留字的风险。提供它们是打开/关闭的正确