-6

我认为正确的搜索引擎的 HTML 代码

我的搜索引擎

PHP 代码从这里开始,我相信错误来自这里

if(!$button)
echo "you didn't submit a keyword"; else
{
if(strlen($search)<=1)
echo "Search term too short";
else{
echo "You searched for <b>$search</b> <hr size='1'></br>";
mysql_connect("localhost","root","");
mysql_select_db("testproject");

$search_exploded = explode (" ", $search);
foreach($search_exploded as $search_each)
{
$x = NULL; $construct = NULL;
$x++;
if($x==1)
$construct .="keywords LIKE '%$search_each%'";
else
$construct .="AND keywords LIKE '%$search_each%'";
}
$construct ="SELECT * FROM members WHERE $construct";
$run = mysql_query($construct);

$foundnum = mysql_num_rows($run);
if ($foundnum==0)
echo "Sorry, there are no matching result for <b>$search</b>.
</br></br>1. Try more general words.";
else
{
echo "$foundnum results found !<p>";

while($runrows = mysql_fetch_assoc($run))
{
$username = $runrows ['username'];
$email = $runrows ['email'];

} 
}
}
}
?>

不断得到:警告:mysql_num_rows() 期望参数 1 是资源,布尔值

4

3 回答 3

1

我认为这只是您查询中的空格问题,只需尝试添加空格,例如

$construct .=" AND keywords LIKE '%$search_each%'";

另请注意,这keyword应该是您要查找的表列的名称。

我还想记住你mysql_不推荐使用函数,所以我建议你切换到mysqli或者PDO确实你有 sql 注入的风险

于 2013-04-28T20:29:48.243 回答
0

那可能是因为 SQL 请求失败了。尝试在or die(mysql_error())旁边追加$run = mysql_query($construct),如下所示:

$run = mysql_query($construct) or die(mysql_error());

这应该输出错误,以便您可以修复它。

于 2013-04-28T20:26:18.917 回答
0

很可能,查询中有错误。尝试这个:

$run = mysql_query($construct);
if (!$run)
  echo 'an error occurred: '.mysql_error();
else {
  $foundnum = mysql_num_rows($run);
  if ($foundnum==0)
  echo "Sorry, there are no matching result for <b>$search</b>.
  </br></br>1. Try more general words.";
else {
  echo "$foundnum results found !<p>"; 
  while($runrows = mysql_fetch_assoc($run)) {
    $username = $runrows ['username'];
    $email = $runrows ['email']; 
  } 
}

该脚本将告诉您问题所在。正如 Fabio 所写,您可能会看到 MySQL 从预期的空间开始报告。(如果你想在你的网站上使用它,你可能需要在这个例子中添加一些 br 标签。)

于 2013-04-28T22:07:58.670 回答