2012-05-30 71 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