2013-02-27 68 views
0

並感謝您的時間。MySQLi語法錯誤

我遇到了MySQLi查詢的問題。經過2個多小時的紮實研究,我無法得出結論。問題如下:

$sql = <<<SQL 
    SELECT * 
    FROM ss_character 
    WHERE usr = {$_SESSION['usr']} 
SQL; 

if(!$result = $mysqli->query($sql)) 
{ 
    die('There was an error running the query [' . $mysqli->error . ']'); 
} 

我想這可能是我的定界符縮進和語法,但我幾乎(永遠不能只有一雙眼睛絕對肯定的),排除了它是說的機會。

它引發錯誤是模糊的,但如下:

「有運行查詢[您的SQL語法錯誤的錯誤;檢查對應於您的MySQL服務器版本的手冊在'第3行'附近使用正確的語法]「。

非常感謝您的幫助。非常感謝,當我知識豐富時,會得到回報。

回答

2

我覺得你錯過了字符串引號(「)..

$sql = <<<SQL 
    SELECT * 
    FROM ss_character 
    WHERE usr = "{$_SESSION['usr']}" 
SQL; 
+0

這確實帶走了錯誤,並且感謝所有說同樣事情的人。即使它將錯誤消除了,它仍然不會從數據庫中提取值。將繼續進一步調試,但正如這回答了這個問題,答案接受了。謝謝你們! – 2013-02-27 05:22:26

0

這可能是由於未封閉引號的用戶字符串,但以防萬一,你試圖不使用here文檔語法看看如果查詢工作,否則

$sql = "SELECT * FROM ss_character WHERE usr = '" . $_SESSION['usr'] . "'"; 
0

我從來沒有見過這種語法......試試這個:

$sql = 'SELECT * FROM ss_character WHERE usr = '.$_SESSION['usr'].';'; 

您應該轉義$_SESSION['usr']以防止SQL注入。

0

試試下面

$sql = "SELECT * 
    FROM ss_character 
    WHERE usr = '".$_SESSION['usr']."'"; 

if(!$result = $mysqli->query($sql)) 
{ 
    die('There was an error running the query [' . $mysqli->error . ']'); 
} 
0

快速瀏覽後,目前尚不清楚該列USR是否是數字或字符串。如果它是一個字符串,你將需要引號{$ _SESSION ['usr']}