Php 未知列?

Php 未知列?,php,mysql,sql,Php,Mysql,Sql,“字段列表”中的未知列“Abu” 这是我正在制作的一个小评论框 当我输入我的名字和评论时,它将不起作用,但是如果我输入名字字段和评论字段,它将起作用???? 这是我的剧本 $name=$_POST['name']; $comment=$_POST['comment']; $submit=$_POST['post']; if($_POST['name'] && $_POST['comment'] && $submit) { $insert=mysq

“字段列表”中的未知列“Abu” 这是我正在制作的一个小评论框 当我输入我的名字和评论时,它将不起作用,但是如果我输入名字字段和评论字段,它将起作用???? 这是我的剧本

$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"; 
}

如果列的数据类型为字符串,则值应使用单引号包装,因为它们是字符串文字

INSERT INTO comment (name,comment) VALUES ('$name','$comment')
作为旁注,如果变量的值来自外部,则查询易受攻击。请看下面的文章,了解如何预防它。通过使用
PreparedStatements
可以避免在值周围使用单引号


您需要在引号中加上字符串:

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

$insert=mysql_query("INSERT INTO comment 
(name,comment) 
VALUES ('$name','$comment') " ) 
。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO

您也对

会解决你的问题。。但是其他开发者可能已经注意到了一些东西,但没有指出。。您尚未关闭SQL查询的倒勾:

INSERT INTO `comment 
应该是:

INSERT INTO `comment`

对列/表/架构名称使用反勾号没有错。。事实上,建议使用它们,以最大限度地降低遇到SQL保留字的风险。。如果它们正确打开/关闭

哇,谢谢!是的,我更喜欢使用PDO,但我的主机不提供。悲哀地我将研究如何防止SQL注入。谢谢你的链接!所以我唯一的问题是,对于SQL,我只是将它设为非直接条目$dbconnection()您也可以使用,但不鼓励这样做,因为它在
PHP5.5.0
上会被弃用,我将使用PDO,减少麻烦。再加上更简单。个人规则保持简单…[亲吻-保持简单水手]
:)
是的,我会让我的代码更现代。我刚刚开始编写PHP,上一次使用PHP大约是在10年秋天。我不确定SQL保留字是什么,不管怎么做。谢谢你的邀请tip@user2288998这篇文章回顾了可能出现的错误消息,并对我所说的保留字进行了解释
INSERT INTO `comment`