从wpdb中检索数据并以JSON形式返回:我试图将自定义表数据填充到输入字段中,这是example。我做了一切,但PHP查询没有从表中检索数据。
这是我的WORDPRESS版本无效
<?php
global $wpdb;
$db_table_name = $wpdb->prefix . 'sonali_data';
$key=$_GET['key'];
$array = array();
$result = $wpdb->get_results ( "SELECT * FROM $db_table_name WHERE name LIKE '%{$key}%'");
while($row=mysql_fetch_assoc($result)){
$array[] = $row['name'];
}
echo json_encode($array);
?>
的JavaScript
$(document).ready(function(){
$('input#$field_name').typeahead({
name: '$field_name',
remote:'search.php?key=%QUERY',
limit : 10
});
});
这是我的PHP版本与example
的工作方式相同<?php
$key=$_GET['key'];
$array = array();
$con=mysql_connect("localhost","root","password");
$db=mysql_select_db("search",$con);
$query=mysql_query("select * from ajax_example where name LIKE '%{$key}%'");
while($row=mysql_fetch_assoc($query))
{
$array[] = $row['name'];
}
echo json_encode($array);
?>
答案 0 :(得分:2)
当您使用wpdb时,它已经在进行排序并将其放入数组中,因此您不需要mysql_fetch_assoc - 您也应该使用wpdb prepare来清理字符串,尤其是在使用$ _GET时,因为您很容易受到攻击否则是sql注入 - 修改代码:
global $wpdb;
$db_table_name = $wpdb->prefix . 'sonali_data';
$holder = "%s";
$key=$_GET['key'];
$array = array();
$result = $wpdb->get_results ( $wpdb->prepare("SELECT * FROM $db_table_name WHERE name LIKE '%{$holder}%'",$key),ARRAY_A);
foreach($result as $res) {
$array[] = $res['name'];
}
echo json_encode($array);
ARRAY_A告诉wpdb将数据排序为关联数组,默认是将其排序为OBJECT,在这种情况下你必须做$array[] = $res->name
还有一件事,如果要发送回wp_ajax挂钩,则应该使用wp_send_json:所以echo json_encode($array);
而不是wp_send_json($array);
TouchableOpacity