2011-06-11 71 views
0

Possible Duplicate:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select问题与MySQL(如函数)

我运行一个查询:

$result = mysql_query("SELECT *, CONCAT(fname, ' ', lname) AS fullname FROM `users` WHERE fullname LIKE '%$keyword%' "); 

while ($myrow = mysql_fetch_array($result)) { 
    $fname = $myrow['fname']; 
    echo $fname; 
} 

fullname由用空格分开的两个名字。
我有一个错误:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in localhost\search.php on line 8

我如何解决这个错误?

+0

你可以写下面代码的输出:echo mysql_error();最好在while循环之前放置它。 – 2011-06-11 15:03:02

+0

SQL本身似乎没问题。为了调试,在你的mysql_query()中回显完整的SQL语句并添加mysql_error()的输出。 – Bjoern 2011-06-11 15:05:05

+0

谢谢。我做到了。写:'where子句'中的未知列'fullname' – Koiw 2011-06-11 15:08:17

回答

1

好吧我想我看到了你的错误。在MySQL中,你不能在where子句中使用命名列(全名)。因为where子句执行时,行还没有被提取。以下不应引起任何问题:

$result = mysql_query(" 
    SELECT 
    *, 
    CONCAT(fname, ' ', lname) AS fullname 
    FROM users 
    WHERE 
    CONCAT(fname, ' ', lname) LIKE '%$keyword%' 
"); 

while ($myrow = mysql_fetch_array($result)) { 
    $fname = $myrow['fname']; echo $fname; 
} 
+0

谢谢。它的工作:) – Koiw 2011-06-11 15:10:46

+0

很高兴听到,如果它工作可能是你应该考虑接受答案。 – 2011-06-11 15:13:19

+0

当然:)我需要等待4分钟。 – Koiw 2011-06-11 15:24:13

0

为什么不使用此表的全文? 如果您需要搜索表格中的记录,则在此模式下,全文搜索功能非常强大且速度更快。