尝试将变量 $ user_id 绑定到准备好的语句,该数组作为jsonarray发送到Java文件。 以下代码可以正常工作,但是它没有绑定参数,其中 qual_id 的值是静态的。
if ($user_id->num_rows >= 1) {
$mysql_qry = "select * from user_qualification where qual_id='1'";
//$stmt = mysqli_stmt_init($conn);
//$result = mysqli_stmt_prepare($stmt, $mysql_qry);
//mysqli_stmt_bind_param($result, "i", $user_id);
$result = mysqli_query($conn,$mysql_qry);
//mysqli_stmt_execute($stmt);
$data_item = array();
while($row = mysqli_fetch_assoc($result)){
array_push($data_item,
array('u_school'=>$row['school'],
'u_hschool'=>$row['hschool'],
'u_undergrad'=>$row['ugrad'],
'u_grad'=>$row['grad'],
'u_phd'=>$row['phd'],
)
);
}
下面的代码包含与绑定参数有关的错误:
if ($user_id->num_rows >= 1) {
$mysql_qry = "select * from user_qualification where qual_id='?'";
$stmt = mysqli_stmt_init($conn);
$result = mysqli_stmt_prepare($stmt, $mysql_qry);
mysqli_stmt_bind_param($result, "s", $user_id);
//$result = mysqli_query($conn,$mysql_qry);
mysqli_stmt_execute($stmt);
$data_item = array();
while($row = mysqli_fetch_assoc($result)){
array_push($data_item,
array('u_school'=>$row['school'],
'u_hschool'=>$row['hschool'],
'u_undergrad'=>$row['ugrad'],
'u_grad'=>$row['grad'],
'u_phd'=>$row['phd'],
)
);
}
qual_id 列也是bigint。
编辑1:
删除了占位符的引用。
$ mysql_qry =“从user_qualification中选择*,其中qual_id =?”;
编辑2:
从“ s”更改为“ i”。
mysqli_stmt_bind_param($ result,“ i”,$ user_id);
编辑3:
在if语句后 var_dump 变量$ user_id
object(mysqli_result)#3(5){[“” current_field“] => int(0)[” field_count“] => int(1)[” lengths“] => NULL [” num_rows“] => int(1 )[“ type”] => int(0)} []
编辑4:
php文件
<?php
require "conn.php";
$user_name ="omx123"; //$_POST["user_name"];
if ($mysql_qry = $conn->prepare("Select id from UserLoginDetails where username=?")) {
$mysql_qry->bind_param("s", $user_name);
$mysql_qry->execute();
$user_id = $mysql_qry->get_result();
if ($user_id->num_rows >= 1) {
var_dump($user_id);
$mysql_qry = "select * from user_qualification where qual_id=?";
$stmt = mysqli_stmt_init($conn);
$result = mysqli_stmt_prepare($stmt, $mysql_qry);
mysqli_stmt_bind_param($result, "i", $user_id);
//$result = mysqli_query($conn,$mysql_qry);
mysqli_stmt_execute($stmt);
$data_item = array();
while($row = mysqli_fetch_assoc($result)){
array_push($data_item,
array('u_school'=>$row['school'],
'u_hschool'=>$row['hschool'],
'u_undergrad'=>$row['ugrad'],
'u_grad'=>$row['grad'],
'u_phd'=>$row['phd'],
)
);
}
echo json_encode($data_item);
}
}
$conn->close();
?>
修改5:
感谢您的帮助用户:dWinder
$ user_id上的var_dump:
int(1)[]
但是数组仍然是空的。
编辑6:
现在可以正常工作了:D
$mysql_qry = "select * from user_qualification where qual_id=?";
$stmt = mysqli_stmt_init($conn);
mysqli_stmt_prepare($stmt, $mysql_qry);
mysqli_stmt_bind_param($stmt, "i", $user_id_int);
mysqli_stmt_execute($stmt);
$result=mysqli_stmt_get_result($stmt);
答案 0 :(得分:2)
共享instance.get({ plain: true })
的转储后,似乎是mysql结果。为了从那里提取ID,您应该使用$user_id
。
mysqli_fetch_assoc
我假设您将查询用作:“ SELECT ID From ...”,就像您获得if ($user_id->num_rows >= 1) {
$row = mysqli_fetch_assoc($user_id)
$user_id_int = $row["id"]; // or what ever you used to call it
// now you can call the bind...
$mysql_qry = "select * from user_qualification where qual_id=?";
$stmt = mysqli_stmt_init($conn);
$result = mysqli_stmt_prepare($stmt, $mysql_qry);
mysqli_stmt_bind_param($result, "i", $user_id_int);