2012-03-26 61 views
1

表bcompany有什麼不對的MySQL的條款

companyID | cName | ... 

我有輸入字段,其中用於記錄,包括 「輸入」 字符的用戶搜索:

<input type="text" class="bigblack" name="srch" /> 

PHP:

$req="%".mysql_real_escape_string($_POST['srch'])."%"; 

$query = mysql_query("SELECT companyID, cName FROM bcompany WHERE 
companyID OR cName LIKE $req ORDER BY companyID LIMIT 10"); 

OR 

$query = mysql_query("SELECT companyID, cName FROM bcompany WHERE 
companyID,cName LIKE $req ORDER BY companyID LIMIT 10"); 

兩個queri es返回錯誤:

mysql_fetch_array() expects parameter 1 to be resource....

MYSQL SELECT可能有問題。

你能幫我解決這個問題嗎?

感謝提前:)

休息代碼:

while($res = mysql_fetch_array($query)) { 


    echo $res["companyID"]; 
    echo $res["cName"]."<br>"; 



} 
+0

添加了fetch_array部分 – 2012-03-26 21:28:25

回答

3

您的查詢應該是:

$query = mysql_query("SELECT companyID, cName FROM bcompany WHERE 
companyID LIKE '$req' OR cName LIKE '$req' ORDER BY companyID LIMIT 10"); 

下面是MySQL的LIKE文檔:

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

或者你可以在你的查詢使用MySQL的REGEXP到位等等。

它看起來像你調用mysql_fetch_array時,因爲查詢是不正確的,並沒有產生一個mysql_fetch_array可以使用的結果。

+0

這工作完美。謝謝 – 2012-03-26 21:32:51

+0

樂意幫助@Biker John。 – kjones 2012-03-26 21:43:47

2

您需要環繞你字符串引號:

mysql_query("SELECT companyID, cName FROM bcompany WHERE companyID,cName LIKE '$req' ORDER BY companyID LIMIT 10"); 

應該工作。

啊,錯過了這個:

mysql_query("SELECT companyID, cName FROM bcompany WHERE companyID LIKE '$req' OR cName LIKE '$req' ORDER BY companyID LIMIT 10"); 

您可能希望改變或AND。

+0

這是行不通的。無論如何感謝您的答案。 :) – 2012-03-26 21:34:01

+0

感謝您的編輯。它應該現在工作:) – 2012-03-26 21:51:49

2

the docs

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.

這樣的問題,你必須是$query是假的,但在你的(未顯示)的代碼,你沒有檢查這一點。

原因是查詢或查詢,你已經是無效的,以第一個:

SELECT 
    companyID, cName 
FROM 
    bcompany 
WHERE 
    companyID OR cName LIKE $req 
ORDER BY 
    companyID 
LIMIT 10 

這不是有效的查詢,你將需要:

SELECT 
    companyID, cName 
FROM 
    bcompany 
WHERE 
    companyID LIKE "$req" OR cName LIKE "$req" 
ORDER BY 
    companyID 
LIMIT 10 

可以通過直接針對db運行查詢(打開終端窗口和mysql -uname -ppass db等),而不是通過php來幫助識別這樣的問題。這樣做與問題中的任何一個問題將吐出:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that cor...

使錯誤更明顯的地方。

+0

謝謝你的補充說明:) – 2012-03-26 21:53:00