gpt4 book ai didi

PHP Mysqli 语句返回单行,-1 行受影响,没有错误

转载 作者:搜寻专家 更新时间:2023-10-31 20:46:27 25 4
gpt4 key购买 nike

这太令人费解了,我一定是漏掉了一些简单的东西。我有一个查询来检查我要插入的交易是否已经存在以防止重复。这是代码:

function isaDupe($portableDB, $transactArray)
{
$ref = $transactArray["reference"];
$date = $transactArray["qdate"];
$time = $transactArray["time"];

//prints the query so I can run by hand to test
print "SELECT `counter` FROM transactions WHERE (`reference` = '$ref' AND `qdate` = '$date' AND `time` = '$time') ";

if ($dupeSelectStmt = $portableDB->prepare("SELECT `counter` FROM transactions WHERE (`reference` = ? AND `qdate` = ? AND `time` = ?)"))
{
$dupeSelectStmt->bind_param('sss',$ref, $date, $time);
$dupeSelectStmt->bind_result($counter);
$dupeSelectStmt->execute();

while ($dupeSelectStmt->fetch())
{
break;
}

$numRows = $portableDB->affected_rows;

if ($numRows > 0)
return TRUE;
else if ($numRows == -1)
{
print " ERROR: ";
print_r($portableDB->error);
print_r($dupeSelectStmt->error);
return FALSE;
}
else
return FALSE;
}
}

-如果我在同一台服务器上通过 Workbench 手动运行查询,我会返回 24 行。

--如果我手动准备、设置和执行语句,这也是一样的。

-affected_rows 返回 -1

--如果我在语句上做 num_rows 也是一样

-Statement 或 MySQLi 对象上没有存储错误。

-如果我在 fetch() 语句中打印,它会打印一行数据

-如果我将获取的行存储到一个数组中并对结果进行计数,则为 1

-我试过用每个变量分别运行它,同样的事情。

- 同一台服务器上的其他查询(见鬼,在同一个 MySQLi 对象上)工作正常。选择、更新和插入。

最佳答案

答案是我忘记在 mysqlistmt::execute() 之后调用 mysqlistmt::store_result。

一旦我添加了 $dupSelectStmt->store_result();我能够调用 $dupSelectStmt->num_rows 和 $portableDB->affected_rows,它们都显示了我知道我应该看到的 24。

关于PHP Mysqli 语句返回单行,-1 行受影响,没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12569862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com