2017-08-11 100 views
1

我想使用兩個查詢之間使用但當我添加代碼之間它不起作用。這是在使用BETWEEN之前爲我工作的代碼。PHP Mysql Select BETWEEN查詢

$result = mysql_query("SELECT name , liking , id , address , description FROM locations WHERE liking LIKE '%{$likeArray[$newCount]}%'"); 

這是BETWEEN不能正常工作的代碼。

$result = mysql_query("SELECT name , liking , id , address , description FROM locations WHERE ‘long’ BETWEEN ‘$Slong’ AND ‘$Blong’ AND lat BETWEEN ‘$Slat’ AND ‘$Blat’ AND liking LIKE '%{$likeArray[$newCount]}%'"); 
+0

你需要使用括號來包裝你的邏輯 –

+0

@SaadSuri你的意思是圍繞兩個BETWEEN語句的括號嗎? –

+0

是的,你需要評估他們喜歡你想要的結果。 SELECT name,liking,id,address,description FROM WHERE('long'BETWEEN'$ Slong'AND'$ Blong')AND(lat BETWEEN'$ Slat'AND'$ Blat')AND like like LIKE'%{$ likeArray [$ newCount]}%' –

回答

1

這裏有幾個問題。

首先,我會說,不要使用mysql_ *函數,它們在5.5+中被棄用並在7.0中被移除。你的選擇是mysqli_ *函數,或者使用PDO。我更喜歡PDO,但我可以明白爲什麼使用mysqli_ *會很方便,因爲您可以對mysql_執行文本搜索並替換爲mysqli_

現在,你的問題。您正在使用後退和前進勾號來處理所有事情,您應該使用後退勾號和單引號標記。列名應在反引號括起來(')和文本應在單引號(')來encolsed,象下面這樣:

$result = mysqli_query(
    "SELECT name , liking , id , address , description FROM locations WHERE `long` BETWEEN '$Slong' AND '$Blong' AND `lat` BETWEEN '$Slat' AND '$Blat' AND `liking` LIKE '%{$likeArray[$newCount]}%'" 
); 

編輯:另外,你是大開SQLI(SQL注入) - 使用原產地名稱準備好的聲明將消除這種威脅。有一個關於使用PHP PDO here的好教程。