像MySQL准备好的声明

时间:2014-03-11 12:15:25

标签: php mysql mysqli prepared-statement

我正在使用AJAX和准备好的语句创建搜索引擎。发送搜索变量并且AJAX查询成功,但问题在于我的搜索查询语法。无论我的搜索字词与我的关键字的确切程度如何,我的num_rows始终为0.我在搜索字词中添加了% %,我尝试删除空白区域,但我没有想法。

关键词的例子是悲伤,声学,电子,蓝调等。

<?php
include 'config.php';

$partialSearch = "%".$_POST['partialSearch']."%";

$stmt = $mysqli->prepare("SELECT Name FROM videos WHERE Keywords LIKE ? ");
$stmt->bind_param('s',$partialSearch);
$stmt->execute();
$stmt->bind_result($Name);

if($stmt->num_rows() == 0)
{
echo "No results found for ".$_POST['partialSearch'];
}else{
echo "Results for ".$_POST['partialSearch'];
echo $Name;
}
?>

2 个答案:

答案 0 :(得分:1)

if($stmt->num_rows() == 0)

这是不正确的。 num_rows是属性,而不是方法。应该是:

if($stmt->num_rows == 0)

我建议启用错误报告以发现这样的愚蠢错误。有关如何执行此操作的详细信息,请参阅this thread

答案 1 :(得分:1)

您应该添加对store_result的调用,以获得结果中记录的准确计数:

尝试:

...
$stmt->execute();
$stmt->store_result(); // Add this line
$stmt->bind_result($Name);

if($stmt->num_rows == 0)
...