Trying to bind a Variable $user_id to the prepared statement, the array is sent as an jsonarray to a java file. The below code works perfectly fine but it is without the binded parameter, where the value of qual_id is static.
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'],
)
);
}
Below code contains error which is with the binded parameter:
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'],
)
);
}
Also the column qual_id is bigint.
Edit 1:
removed the quotations of placeholder.
$mysql_qry = "select * from user_qualification where qual_id=?";
Edit 2 :
changed from "s" to "i".
mysqli_stmt_bind_param($result, "i", $user_id);
Edit 3 :
var_dump of variable $user_id after the if statement
object(mysqli_result)#3 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) } []
Edit 4 :
php file
<?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();
?>
Edit 5:
Thank you for your help user : dWinder
var_dump on $user_id :
int(1) []
But the array is still empty.
Edit 6:
Works perfectly fine now :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);
'?'You shouldn't be using quotes.