我已经用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;
//}
?>
请帮助,谢谢
答案 0 :(得分:1)
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
,因为它是一个不正确的查询。 (即$data
是FALSE
)。因此,mysql_fetch_array()
和mysql_num_rows()
失败并显示错误,因为FALSE
作为输入提供。
提示:
要正确过滤输入,请使用mysqli_real_escape_string()
。顺便说一下,如果表格整理不区分大小写,则无需将其更改为大写。
您始终可以var_dump()
,var_export()
,echo
或print_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
}