2012-05-30 58 views
0

尽管阅读了很多帖子,我无法解决这个错误 - 未知列'alt.atheism1111'在'字段列表' 字段文件名,类别可能有。在数字或单词中间, 即时通讯使用phpmyadmin的数据库在php中插入mysql查询时出现未知列错误?

function insert_rec($cat,$file,$wordid,$synsetid,$seqno) 
{ 
    $cat=mysql_real_escape_string($cat); 
    $file=mysql_real_escape_string($file); 
    $wordid=mysql_real_escape_string($wordid); 
    $synsetid=mysql_real_escape_string($synsetid); 
    $seqno=mysql_real_escape_string($seqno); 
    echo $cat." ". $file ." ". $wordid." " . $synsetid." " . $seqno; 
    $sql="INSERT INTO `wordnet50`.`table` (`category`,`filename`,`wordid`,`synsetid`,`seqno`) VALUES (`" . $cat . "`,`" . $file. "`,`" . $wordid. " `,`" . $synsetid . "`,`" .$seqno . "`)"; 
    $result=mysql_query($sql); 

    if(!$result) 
    { 
    die(mysql_error()); 
    } 
} 
+3

请停止使用古代mysql_ *函数编写新代码。他们不再被维护,社区已经开始了贬值过程。相反,您应该了解准备好的声明并使用PDO或MySQLi。 – Bono

+1

感谢您的建议 – stack

回答

2
$sql="INSERT INTO `wordnet50`.`table` (`category`,`filename`,`wordid`,`synsetid`,`seqno`) VALUES (`" . $cat . "`,`" . $file. "`,`" . $wordid. " `,`" . $synsetid . "`,`" .$seqno . "`)"; 

你需要从上面的查询只值删除“`”,取而代之的是“'”(单引号)

+0

感谢@ollie的更正。 – Arfeen

1

对字段名称和单引号使用反引号的值。

$sql = "INSERT INTO `wordnet50`.`table` (`category`,`filename`,`wordid`,`synsetid`,`seqno`) 
     VALUES ('$cat', '$file', '$wordid', '$synsetid', '$seqno')"; 
0

它应该用单引号括起来,而不是用back tick。

$sql = "INSERT INTO `wordnet50`.`table` (`category`,`filename`,`wordid`,`synsetid`,`seqno`) VALUES ('" . $cat . "','" . $file. "','" . $wordid. "','" . $synsetid . "','" .$seqno . "')"; 

BackTick逃脱MYSQL Reserved WORDS

-2

如果u可以张贴乌尔DB模式比这将是很容易检查,截至目前它看起来像u有一个字段作为alt.atheism1111它可以是显示塞

或使用本:

$sql = "INSERT INTO `wordnet50`.`table` (`category`,`filename`,`wordid`,`synsetid`,`seqno`) 
    VALUES ('$cat', '$file', '$wordid', '$synsetid', '$seqno')"; 
+0

是的,我也想通了,虽然它很奇怪,因为我尝试过使用单引号,但它并不起作用。将列名放入'和值在单引号内的组合使它可以工作!希望这可以帮助其他有类似问题的人 – stack