努力完成我的网页设计任务。我一直在按照教程为我的网站添加搜索功能,但我收到了以下错误:
警告:mysqli_num_rows()要求参数1为mysqli_result,第31行的/search.php中给出布尔值
第31行是(或是)
<pre>if(mysqli_num_rows($results) >= 1)</pre>
这是原始错误。根据评论中的说明,我已经修改了代码:
<pre>
<?php
//capture search term and remove spaces at its both ends if the is any
$searchTerm = trim($_GET['keyword']);
//check whether the name parsed is empty
if($searchTerm == "")
{
echo "Enter the name/brand of what you're looking for.";
exit();
}
//database connection info
$host = "localhost";
$db_name = "sookehhh_shopsy_db";
$username = "sookehhh_shopsy";
$password = "xxxx";
//connecting to server and creating link to database
$link = mysqli_connect($host, $username, $password, $db_name) or die('Could not connect: ' . mysqli_connect_error());
//MYSQL search statement
$query = "SELECT * FROM sookehhh_shopsy_db WHERE name LIKE '%" . mysqli_real_escape_string($link, $searchTerm) . "%'";
// original query$query = "SELECT * FROM sookehhh_shopsy_db WHERE name LIKE '%$searchTerm%'";
$results = mysqli_query($link, $query);
//added suggestion below - not sure if correct place?
if (!$result) {
die(mysqli_error($link));
}
/* check whethere there were matching records in the table
by counting the number of results returned */
if(mysqli_num_rows($results) >= 1)
{
$output = "";
while($row = mysqli_fetch_array($results))
{
$output .= "Product Name: " . $row['name'] . "<br />";
$output .= "Price: " . $row['price'] . "<br />";
}
echo $output;
}
else
echo "There was no matching record for that item " . $searchTerm;
?>
</pre>
进行必要的更改并再次更新 -
现在我收到的唯一错误信息是“表'sookehhh_shopsy_db.sookehhh_shopsy_db'不存在”
我假设我需要更改用户名,也许是因为它太相似了?
Anywho,感谢你的帮助到目前为止,我为我的完全无知而道歉。
我一直在努力教自己,但不幸的是,时间是我现在所没有的奢侈品。
答案 0 :(得分:17)
问题是您的查询返回false
,表示您的查询中存在错误。查询后,您可以执行以下操作:
if (!$result) {
die(mysqli_error($link));
}
或者您可以将其与查询结合使用:
$results = mysqli_query($link, $query) or die(mysqli_error($link));
这将打印出您的错误。
另外......你需要消毒你的输入。您不能只是接受用户输入并将其放入查询中。试试这个:
$query = "SELECT * FROM shopsy_db WHERE name LIKE '%" . mysqli_real_escape_string($link, $searchTerm) . "%'";
回复:表'sookehhh_shopsy_db.sookehhh_shopsy_db'不存在
您确定表名是sookehhh_shopsy_db吗?也许它真的像用户或其他东西。