php 用数组实时搜索
php live search with array
我正在我的网站上使用 AJAX 和 PHP 进行实时搜索。我已经尝试使用 XML 但我不喜欢它。我需要能够轻松更新搜索结果,而且我发现使用数据库更容易做到这一点。
所以,到目前为止我有这个代码:
<?php
// database connection
$query = "SELECT * FROM Questions";
$doQuery = mysql_query($query);
$searchArray = array();
$x = 0;
while($row=mysql_fetch_assoc($doQuery)) {
$searchArray[$x] = $row['title'];
$x++;
}
$q = $_GET['search'];
现在我有一个包含我的问题的所有标题的数组 table。
当用户键入每个字母时,我将如何在我的数组中搜索字符串。 (假设我有一个函数在 keyup 事件上使用 ajax 调用上述查询)。
还是我这样做完全错了?我想使用数据库来获取我的搜索结果。这样做的最佳方法是什么?
谢谢
编辑后:
作为 $query
:
的一部分,我也已经尝试过做类似的声明
$query = "SELECT * FROM Questions WHERE title LIKE '%" . $q . "%'";
我不喜欢它的工作方式,因为一旦你超过一个词,结果就不匹配了。
最好的解决方案不是将数据拉入数组,而是设置一个 AJAX 解决方案,让您的 AJAX 端点运行带通配符的 LIKE 查询。常见的实现看起来像:
$query = "SELECT * FROM Questions WHERE someCol LIKE %SOME_INJECTED_VAR%";
此外,请注意,您应该考虑使用 mysqli 或 PDO 而不是 mysql_* 函数,因为它们已被弃用并将在即将推出的 PHP 版本中删除。
我正在我的网站上使用 AJAX 和 PHP 进行实时搜索。我已经尝试使用 XML 但我不喜欢它。我需要能够轻松更新搜索结果,而且我发现使用数据库更容易做到这一点。
所以,到目前为止我有这个代码:
<?php
// database connection
$query = "SELECT * FROM Questions";
$doQuery = mysql_query($query);
$searchArray = array();
$x = 0;
while($row=mysql_fetch_assoc($doQuery)) {
$searchArray[$x] = $row['title'];
$x++;
}
$q = $_GET['search'];
现在我有一个包含我的问题的所有标题的数组 table。
当用户键入每个字母时,我将如何在我的数组中搜索字符串。 (假设我有一个函数在 keyup 事件上使用 ajax 调用上述查询)。
还是我这样做完全错了?我想使用数据库来获取我的搜索结果。这样做的最佳方法是什么?
谢谢
编辑后:
作为 $query
:
$query = "SELECT * FROM Questions WHERE title LIKE '%" . $q . "%'";
我不喜欢它的工作方式,因为一旦你超过一个词,结果就不匹配了。
最好的解决方案不是将数据拉入数组,而是设置一个 AJAX 解决方案,让您的 AJAX 端点运行带通配符的 LIKE 查询。常见的实现看起来像:
$query = "SELECT * FROM Questions WHERE someCol LIKE %SOME_INJECTED_VAR%";
此外,请注意,您应该考虑使用 mysqli 或 PDO 而不是 mysql_* 函数,因为它们已被弃用并将在即将推出的 PHP 版本中删除。