[英]$mysqli->affected_rows returns -1, but $mysqli->errno returns 0
[英]$mysqli->affected_rows returns 0 multi_query
我有簡單的代碼。 該查詢工作正常。 它也可以直接通過sql和php運行(將$mysqli->query
更改$mysqli->query
$mysqli->multi_query
以使其從php運行),但是它$mysqli->affected_rows
返回0
。 實際上有插入的行,當我運行它通過heidisql查詢時會報告:
受影響的行:2找到的行:0警告:0 2個查詢的持續時間:0.000秒。
我應該如何計算受影響的行? 我究竟做錯了什么?
我也嘗試了rowCount(),並沒有真正的幫助。
include ("../connect.php");
$sql = "SELECT balance INTO @b
FROM managerstock
WHERE ID = LAST_INSERT_ID();
INSERT INTO managerstock (`inOut`, quantity, balance)
VALUES (1, 1, 3);";
if($result = $mysqli->multi_query($sql)){
echo $mysqli->affected_rows;
}
這里的CALL user('param1','param2','param3','param4');
是一個存儲過程,您可以在其中編寫任意數量的查詢。
您可以使用ROW_COUNT()
函數獲取受影響的行數,並使用select語句將其獲取為輸出。
程序
CREATE DEFINER=`root`@`localhost` PROCEDURE `user`(IN `p_mode` VARCHAR(100), IN `p_id` INT(3), IN `p_name` VARCHAR(100), IN `p_contact_no` VARCHAR(100))
NO SQL
begin
DECLARE
row_count int(11);
if p_mode='update' then
UPDATE `user` SET `name`=p_name, `contact_no`=p_contact_no WHERE `id`=p_id;
SET row_count = ROW_COUNT();
select row_affected as row_count;
end if;
end
PHP腳本:
<?php
function execute_qry($sql){
$fire=mysqli_multi_query($this->conn,$sql);
$array_result= array();
do{
$res = array();
if($result = $this->conn->store_result())
{
while($row = mysqli_fetch_assoc($result))
{
array_push($res,$row);
}
array_push($array_result,$res);
}
}while($this->conn->more_results() && $this->conn->next_result());
return $array_result;
}
$query = "CALL user('update','1','hiren','1234');";
$exe_qry=execute_qry($query);
?>
首先插入記錄,然后進行選擇查詢
include ("../connect.php");
$sql = "INSERT INTO managerstock (`inOut`, quantity, balance)
VALUES (1, 1, 3);SELECT balance INTO @b
FROM managerstock
WHERE ID = LAST_INSERT_ID();";
if($result = $mysqli->multi_query($sql)){
echo $mysqli->affected_rows;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.