2017-08-24 80 views
2

我试图为应用程序实现搜索建议,并且需要搜索包含用户列表的数据库表。我需要脚本返回一个包含符合条件的所有用户的详细信息的数组(即,如果用户搜索'Jo',它将返回名为'John''Joe'的用户等)。我已经使用部分其他脚本执行此操作,但我无法使mysqli_fetch_array方法正常工作。从选择查询返回结果数组php

我使用onTextChangedListener来查询每次用户输入内容时的脚本,我相信这是正确的做法。我会在下面发布我的代码,如果有任何更多的信息需要让我知道。

$con = mysqli_connect(database details); 

$name = $_POST["name"]; 

$statement = mysqli_prepare($con, "SELECT user_id, name, email FROM users WHERE name = ?"); 
mysqli_stmt_bind_param($statement, "s", $name); 
mysqli_stmt_execute($statement); 
mysqli_stmt_store_result($statement); 
mysqli_stmt_bind_result($statement, $user_id, $name, $email); 


$response = mysqli_fetch_array($statement, MYSQLI_ASSOC); 

echo json_encode($response); 

mysqli_close($con); 

在android studio中我收到错误:mysqli_fetch_array() expects parameter 1 to be mysqli_result

+1

注:面向对象的接口,以'mysqli'是显著少冗长,使代码更容易阅读和审核,并且不是容易混淆过时的'mysql_query'接口。在你过于投入程序风格之前,它是值得转换的。例如:'$ db = new mysqli(...)'和'$ db-> prepare(“...”)过程接口是PHP4时代的一个神器,当引入mysqli API时,不应该在新的代码 – tadman

+0

JSteward你检查了答案吗? –

回答

1

尝试changint用于下面的循环的mysqli_fetch数组:

while (mysqli_stmt_fetch($statement)) { 
    $response[] = [ 
     "user_id" => $user_id, 
     "name" => $name, 
     "email" => $email, 
    ]; //assign each data to response array 
}