使用MySQLi和php自动完成(通过自动完成UI)

时间:2015-11-03 21:21:52

标签: php jquery mysqli autocomplete

我正在尝试使自动完成php与数据库交互,但是找到超过10个在线资源,无法使其与我的数据库一起工作。 这是index.php代码:

<!doctype html>
<html>
<head>
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/minified/jquery-ui.min.css" type="text/css" />
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>
    <script>
        $(function() {
            //autocomplete
            $("#model").autocomplete({
                source: "search.php",
                minLength: 1
            });                

        });
    </script>
</head>
<body>
    <form action='' method='post'>
<p><label>Model:</label><input type='text' id="model" name='model' class='model'/></p>

</body>
</html>

这是search.php:

<?php
define('DB_SERVER', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '123456');
define('DB_NAME', 'inventory');

if (isset($_GET['term'])){
    $return_arr = array();

    $conn = new mysqli(DB_SERVER,DB_USER,DB_PASSWORD,DB_NAME);
    $stmt =  $conn->stmt_init();
    $term = '%'.$_GET['term'].'%';
    $stmt = $conn->prepare("SELECT name from items WHERE name like ?");
    $stmt->bind_param("s", $term);
    $stmt->execute();
    $stmt->bind_result($models);
    while( $row = $models){
        $return_arr[] =  $row['name'];
    }
    echo json_encode($return_arr);
}  
?>

有些教程使用的fetch_array()不能解决我的脚本原因吗?它只适用于常规循环,例如while循环,用于存储数据库中的数组,然后使用foreach回显每一行。我正在使用$mysqli->fetch_array()。 哪部分错了?

2 个答案:

答案 0 :(得分:0)

你应该这样做:

替换&#34; bind_result&#34;与此相符(仅为方便起见):

$stmt->bind_result($name);

然后用这个替换你的while循环:

while ($stmt->fetch()) {
    $return_arr[] = $name;
}

它应该有效。

对于查询中的每一列,您基本上都会在bind_result语句中添加一个变量,并在迭代结果时使用这些变量;

答案 1 :(得分:-1)

使用以下代码并浏览网址@, http://www.codexworld.com/autocomplete-textbox-using-jquery-php-mysql/

//get matched data from skills table
$query = $db->query("SELECT * FROM skills WHERE skill LIKE '%".$searchTerm."%' ORDER BY skill ASC");
while ($row = $query->fetch_assoc()) {
    $data[] = $row['skill'];
}

//return json data
echo json_encode($data);