Reputation: 2528
== SOLVED ==
I get this query from the following post:
How to get ID of the last updated row in MySQL?
I tried it on phpMyAdmin and see the result I wanted but unable to fetch it.
$query = "SET @order_id := '', @order_token := '', @order_param := ''; UPDATE transaction set `ts_status` = 'completed', `ts_remarks` = '', `tsid` = (SELECT @order_id := tsid), `token` = (SELECT @order_token := token), `param` = (SELECT @order_param := param) WHERE `token` = '503cd5c095fa942dbdfe72b2f4302edf' LIMIT 1; SELECT @order_id as order_id, @order_token as order_token, @order_param as order_param";
if($result = $con->query($query)){
$row = $result->fetch_array();
} else {
echo 'no result';
}
It returns 'no result'
Please advise.
== SOLUTION ==
if (!$con->multi_query($query)) {
echo "Multi query failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
do {
if ($res = $con->store_result()) {
$row = $res->fetch_all(MYSQLI_ASSOC);
$res->free();
}
} while ($con->more_results() && $con->next_result());
echo '<pre>';
print_r($row);
echo '</pre>';
Upvotes: 4
Views: 59
Reputation: 1168
Try making one query for each statement. One for SET, one for UPDATE, one for SELECT.
ETA: That wouldn't work because of the SET I guess. You need to use multi_query instead.
Upvotes: 1