我正在尝试使自动完成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()
。
哪部分错了?
答案 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);