Php 确保autosuggest中使用了最新的SQL查询结果

Php 确保autosuggest中使用了最新的SQL查询结果,php,sql,autocomplete,yui,Php,Sql,Autocomplete,Yui,我使用下面的PHP代码获取返回到autosuggest/autocomplete的结果。问题在于,如果较早的SQL查询从数据库返回的时间比最近的SQL查询要长,则较早查询的结果将显示在“自动建议结果”框中。因此,如果您开始搜索Thomas,那么如果SQL查询需要更长的时间,它可能会显示Tho的结果。我想知道是否有一种方法可以在实现新查询后取消以前的查询,或者确保使用最新的查询 <?php // begin XML output $xmlStr = <<<XML <?

我使用下面的PHP代码获取返回到autosuggest/autocomplete的结果。问题在于,如果较早的SQL查询从数据库返回的时间比最近的SQL查询要长,则较早查询的结果将显示在“自动建议结果”框中。因此,如果您开始搜索Thomas,那么如果SQL查询需要更长的时间,它可能会显示Tho的结果。我想知道是否有一种方法可以在实现新查询后取消以前的查询,或者确保使用最新的查询

<?php
// begin XML output
$xmlStr = <<<XML
<?xml version='1.0' standalone='yes'?>
<authors>
XML;

// open database connection
$mysqli = new mysqli("localhost", "user", "pass", "library");      
if (mysqli_connect_errno()) {
    printf("Connect failed: %s
", mysqli_connect_error());
    exit();
}

// retrieve author list matching input
// add to XML document
$q = $mysqli->real_escape_string($_GET['query']);
$sql = "SELECT AuthorName FROM author WHERE AuthorName LIKE '" . $q . "%' ORDER by AuthorName";
if ($result = $mysqli->query($sql)) {
  while ($row = $result->fetch_row()) {
    $xmlStr .= '<author name="' . $row[0] . '"></author>';
  }
  $result->close();
}

// clean up
// output XML document
$mysqli->close();
$xmlStr .= '</authors>';
header("Content-Type: text/xml");
echo $xmlStr;
?>
close();
}
//清理
//输出XML文档
$mysqli->close();
$xmlStr.='';
标题(“内容类型:text/xml”);
echo$xmlStr;
?>

您可能需要同步AJAX调用。比如在键启动事件之后有几秒钟的延迟,然后进行AJAX调用。设置
asynchronous=true
也会有所帮助。

您可以通过调用abort方法中止ajax调用:
XmlHttpRequest.abort()
在发出新请求之前,如果这与ajax相关,您可以添加
ajax
标记。