2016-10-02 33 views
-2

在MySQL我有類似:PHP和Mysql || '或'語法?

$currentname = mysql_query("SELECT * FROM posts LIMIT $start, 5 WHERE "); 

我怎麼可以做這樣的事情下面的作品:

$currentname = mysql_query("SELECT * FROM posts LIMIT $start, 5 WHERE `title` LIKE '%{Hello world}%' || Where `text` LIKE '%{Hello World}%'"); 

喜歡的東西上面,將實際工作。

+2

請閱讀說明書https://dev.mysql.com/doc/refman/5.7/en/select.html –

+0

投票結束爲錯字。 –

回答

0

試試這個:

$queryResult = mysql_query("SELECT * FROM posts WHERE `title` LIKE '%{Hello world}%' OR `text` LIKE '%{Hello World}% LIMIT $start, 5'"); 
$currentName = mysql_fetch_assoc($queryResult); 

,如果你指望有很多結果...

while($currentName = mysql_fetch_assoc($queryResult)) { 
    //your code here... 
    } 
+0

'while(($ currentName = mysql_fetch_assoc($ queryResult))' - 你有一個額外的支架,應該讀爲'while($ currentName = mysql_fetch_assoc($ queryResult))' –

+0

你是對的,謝謝! –

0

更換||OR和刪除後,附帶額外WHERE。在SQL中,||OR&&AND。你可以閱讀更多here

注:請花時間閱讀手冊,這絕對有幫助。

0

您可以在MySql中使用OR,它可能非常適合大多數情況。

或者,對於每個OR查詢,整個查詢都會再次運行,但性能方面略有不利。我不是MySql性能大師,但看起來UNION更好的優化。所以一般來說,在免得更多或語句,你應該使用UNION這樣的:

SELECT your_union_result.* FROM 
(
SELECT * FROM posts WHERE `title` LIKE '%{Hello world}%' 
UNION 
SELECT * FROM posts WHERE `text` LIKE '%{Hello World}%' 
) AS your_union_result 
ORDER BY your_union_result.order_column 
LIMIT $start, 5 

請注意:我的版本有一個子查詢。如果您想要訂購結果或限制總行數,則需要它。您現在有幾個選項來獲取實際結果。

你可以逐行fetch_assoc(),fetch_array()等等。目前還不清楚你想要什麼作爲實際結果。 $ currentname表示帖子或用戶名,但$ start的限制爲5,表示您需要列表。

繼續閱讀並閱讀http://php.net/manual/en/function.mysql-fetch-array.php和其他獲取函數。如果您需要更多幫助,請更新您的問題以獲得更具體的信息。