2012-05-28 117 views
1

是什麼在此代碼MySQL查詢語法錯誤在PHP

$FN=strtok($_POST['IS'],' '); 
$LN=strtok(' '); 
$query="SELECT person_id FROM a_person WHERE first_name=$FN AND last_name=$LN"; 

錯誤是這樣說我想不通爲什麼錯誤?

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法使用附近的手冊「SELECT和姓氏=」在行1

+0

爲$ LN不是在這種情況下,一個數組?所以這是一個混合字符串和數組的語法錯誤 – hackartist

+0

另外,引用你的字符串:'WHERE first_name ='$ FN'AND last_name ='$ LN'「;' –

+0

我看到一個問題,你容易受到SQL注入 –

回答

2

你需要引用$FN$LN

$query = "SELECT person_id FROM a_person WHERE first_name='$FN' AND last_name='$LN'"; 
1

使用爆炸,剝掉它們。還有mysql轉義數據:

$names = explode(' ',mysql_real_escape_string($_POST['IS'])); 
$FN = $names[0]; 
$LN = $names[1]; 
$query="SELECT person_id FROM a_person WHERE first_name='$FN' AND last_name='$LN'"; 
+1

這是不正確的。直接從文檔,[strtok()](http://php.net /manual/en/function.strtok.php)將會返回「A ** string ** token」 –

+0

啊你是對的,對不起,我會編輯我的答案 – hackartist

1

你需要用單引號包裝字符串值。

$query = "SELECT person_id FROM a_person WHERE first_name='$FN' AND last_name='$LN'";