使用MATCH AGAINST搜索mySQL:提供的参数不是有效的MySQL

时间:2012-03-06 23:27:46

标签: php mysql

我有一个名为“clients”的MYSQL数据库,显示如下:

FNAME | LNAME | TEL | MAIL | USER | ID

现在使用这个小代码,我想搜索aaaa的基础(稍后会动态):

$sql = "SELECT * FROM clients WHERE MATCH(LNAME, FNAME, TEL, MAIL) AGAINST('aaaa')";

        $rest = MySQL_query($sql);

        while($row = MySQL_fetch_array($rest)) {

            echo "<tr><td>{$sql['LNAME']}</td>";

            echo "<td>{$sql['FNAME']}</td>";

            echo "<td>{$sql['TEL']}</td>";

            echo "<td>{$sql['MAIL']}</td></tr>";

        }

但我得到的只是Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/sites/xxxxxxxx/search.php on line 31

第31行:while($row = MySQL_fetch_array($rest)) {

我尝试了1000种组合,但似乎没有什么可以做到的。我做错了什么?!

感谢您的帮助

编辑:好的我现在已经将FULLTEXT添加到我的桌面了。我现在没有错误,但问题是我仍然没有结果。这段代码是否会搜索所有字段并查看“aaaa”是否属于其中任何一个字段中的所有四个字段?

编辑2:

在代码的最后部分将$ sql更改为$ row。似乎工作......

编辑3:但仅限于MATCH(LNAME)(或另一个)。不是我全部添加它们。

1 个答案:

答案 0 :(得分:0)

请尝试以下任一方法:

$sql = "SELECT * FROM clients WHERE CONCAT_WS(' ',LNAME, FNAME, TEL, MAIL) LIKE '%aaaa%'";
$sql = "SELECT * FROM clients WHERE CONCAT_WS(' ',LNAME, FNAME, TEL, MAIL) regexp '.*aaaa+.*'";