【问题标题】:LIKE MySQL Prepared StatementLIKE MySQL 准备好的语句
【发布时间】:2014-03-11 12:15:24
【问题描述】:

我正在使用 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;
}
?>

【问题讨论】:

  • 我很确定echo $Name; 将不起作用,尤其是当您收到多个结果时。

标签: php mysql mysqli prepared-statement


【解决方案1】:
if($stmt->num_rows() == 0)

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

if($stmt->num_rows == 0)

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

【讨论】:

    【解决方案2】:

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

    试试:

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

    【讨论】:

      猜你喜欢
      • 2019-07-02
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多