2012-03-26 46 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