【问题标题】:MYSQL & PHP Search QueryMYSQL & PHP 搜索查询
【发布时间】:2017-01-15 00:46:32
【问题描述】:

所以我正在构建一个小型搜索引擎来处理我创建的数据库,并且我希望这个搜索引擎在您搜索时返回多个结果。例如,如果您输入 Jo,它将返回 John 和 Joe。这是我到目前为止所构建的:

$query = mysqli_query($con,"SELECT * FROM users WHERE name LIKE '%" . $searchquery . "%' ");
  $results = mysqli_fetch_array($query);
  return $results;

我遇到的问题是我只得到一个结果,Joe 因为字母顺序,但我希望它返回 Joe John 和任何其他结果。我知道我遗漏了什么或做错了什么,我将不胜感激任何指导!干杯!

【问题讨论】:

  • 可能是因为您只从结果集中获取一个(第一)行并立即返回它。通过查看 return 语句,我假设您在函数中有 that 代码块。
  • 除了连接数据库之外,这是函数内部唯一的其他代码。我通过 AMFPHP 使用 return。
  • 我在下面给出了答案。希望这能解决您的问题。

标签: php mysql search mysqli


【解决方案1】:

来自OP's comment

除了连接数据库,这是函数内唯一的其他代码。我通过 AMFPHP 使用 return。

由于您在函数中使用上述代码块,问题会因为mysqli_fetch_array(...);return 语句而出现。您只从结果集中获取一个(第一)行并立即返回它。

解决方案是,创建一个空的创建数组并使用while() 循环遍历结果集。并且在循环的每次迭代中,从结果集中获取一行并将其推送到数组中。最后在函数的最后,简单地返回 that 数组。

所以你的代码应该是这样的:

$query = mysqli_query($con,"SELECT * FROM users WHERE name LIKE '%" . $searchquery . "%' ");

$resultArr = array();
while($results = mysqli_fetch_array($query)){
    $resultArr[] = $results;
}
return $resultArr;

旁注:如果要查看完整的结果数组结构,请var_dump($resultArr);

【讨论】:

    猜你喜欢
    • 2012-11-12
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多