使用php代码搜索

时间:2013-07-24 07:28:25

标签: php

我已经用PHP编写了一个搜索引擎,

经过测试,有一件事困扰着我。

第一个错误

(mysql_fetch_array() expects parameter 1 to be resource, boolean given in)  

第二个错误

(mysql_num_rows() expects parameter 1 to be resource, boolean given in)  

很抱歉,我们找不到符合您查询的条目...

这是代码

<?php

echo "<h2>Search Results:</h2><p>";

//If they did not enter a search term we give them an error
if ($find == "Account_Number")
{
echo "<p>You forgot to enter a search term!!!";
exit;
}

// Otherwise we connect to our Database
mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());

// We perform a bit of filtering
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);

//Now we search for our search term, in the field the user specified
$data = mysql_query("SELECT * FROM memaccounts WHERE upper($field) LIKE'%$find%'");

//And we display the results
while($result = mysql_fetch_array( $data ))
{
echo $result['Account_Number'];
echo $result['Name'];
echo "<br>";
echo $result['Balance'];
echo "<br>";
echo "<br>";
}

$anymatches=mysql_num_rows($data);
if ($anymatches == 0)
{
echo "Sorry, but we can not find an entry to match your query...<br><br>";
}

//And we remind them what they searched for
echo "<b>Searched For:</b> " .$find;
//}
?>

请帮助,谢谢

5 个答案:

答案 0 :(得分:1)

如果存在SQL错误,则mysp_query()返回false。在循环结果之前,您必须检查$ data是否为false。举例来说:

if (!$data) exit(mysql_error());

或者只是在mysql_query()行的末尾添加“或die(mysql_error())”,就像使用connect和select_db一样。

答案 1 :(得分:0)

您的查询可能存在错误。检查它上面没有拼写错误 我建议捕获查询(回显或记录它)然后使用任何数据库客户端运行它,如phpmyadmin或heidisql。

答案 2 :(得分:0)

查询可能会有效,除非$find包含无效字符。例如,如果它包含引号('),那么它将破坏您的查询。

您可以使用mysql_real_escape_string来解决此问题,尽管最好使用mysql *函数退出并切换到PDO。不推荐使用mysql *函数,可能会在将来的PHP版本中将其删除。

答案 3 :(得分:0)

由于未定义$find$field,查询将变为:

SELECT * FROM memaccounts WHERE upper() LIKE'%%'

使mysql_query()返回FALSE,因为它是一个不正确的查询。 (即$dataFALSE)。因此,mysql_fetch_array()mysql_num_rows()失败并显示错误,因为FALSE作为输入提供。

提示:

  • 要正确过滤输入,请使用mysqli_real_escape_string()。顺便说一下,如果表格整理不区分大小写,则无需将其更改为大写。

  • 您始终可以var_dump()var_export()echoprint_r()调试您的代码(取决于具体情况)

  • 停止使用已弃用的mysql_*函数。改为使用MySQLi或PDO。

  • 您的代码会受到SQL注入攻击,因为您可以直接在查询中插入POST值。

答案 4 :(得分:0)

 Please check the query.
mysql_query() this function returns true or false to show query worked or not.
your result shows boolean means query failed.
use mysql_error() 
for ex :- 
$result=mysql_query('Your query');
if(!$res){
 die(mysql_error()); //gives information regarding error
}