数据库自动完成无法正常工作

时间:2013-09-13 22:25:15

标签: php mysql autocomplete mysqli

我正在使用自动完成,其中的建议来自数据库并且它工作正常,但我尝试将其更改为mysqli但它不起作用。它没有显示任何建议;没有错误。

  1. 我在mysqli端错过了什么?
  2. 我怎样才能添加更多表格(我有40个表格)?感谢。
  3. MySQL的:

     <?php
     mysql_connect("localhost","root","");
     mysql_select_db("database");
    
     $term=$_GET["term"];
    
     $query=mysql_query("SELECT * FROM products1 where title like '%".$term."%' order by id ");
     $json=array();
    
        while($student=mysql_fetch_array($query)){
             $json[]=array(
                        'value'=> $student["title"],
                        'label'=>$student["title"]
                            );
        }
    
     echo json_encode($json);
    
    ?> 
    

    我尝试使用MySQLi编写的语句:

    <?php
    $mydb = new mysqli('localhost', 'root', '', 'database');
    $q = $_POST['term'];
    $stmt = $mydb->prepare(" SELECT * from products1 where title LIKE ? ");
    echo $mydb->error;
    $stmt->bind_param('s', $q);
    $stmt->execute();
    ?>
    <?php
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
    $json[]=array(
                'value'=> $student["title"],
                'label'=>$student["title"]
                                 );
    
    
    }
    echo json_encode($json);
    
    ?>
    

1 个答案:

答案 0 :(得分:0)

首先,Jonathan建议在该术语中添加通配符('%')是正确的。你的错误是在循环中使用变量 $ student 而不是 $ row (反之亦然)。

<?php
$mydb = new mysqli('localhost', 'root', '', 'test');
$q = '%'.$_POST['term'].'%';
$stmt = $mydb->prepare(" SELECT * from products1 where title LIKE ? ");
echo $mydb->error;
$stmt->bind_param('s', $q);
$stmt->execute();


$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
$json[]=array(
        'value'=> $row["title"],
        'label'=>$row["title"]
                         );
}
echo json_encode($json);

&GT?;

P.S。:确保您的查询先行。并且,您在 $ row ['columnName'] 中使用的列实际上存在。