Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO exec返回0,而不是受影响的行_Php_Pdo_Exec - Fatal编程技术网

Php PDO exec返回0,而不是受影响的行

Php PDO exec返回0,而不是受影响的行,php,pdo,exec,Php,Pdo,Exec,我对PDO::exec()方法有问题。我花了一个小时想弄明白,但还是一无所获。我可能会错过一些小东西 我使用exec更新(并在另一段代码中删除)数据库中的一行。根据手册,exec应该返回受影响的行数。但在我的例子中(更新和删除),exec运行,physicali更新数据库,但仍然返回0 这是我的update语句代码(delete类似) $data=Array( 'title'=>$entity->getTitle(), 'subtitle'=>$entity->getSubtitle(), 't

我对PDO::exec()方法有问题。我花了一个小时想弄明白,但还是一无所获。我可能会错过一些小东西

我使用exec更新(并在另一段代码中删除)数据库中的一行。根据手册,exec应该返回受影响的行数。但在我的例子中(更新和删除),exec运行,physicali更新数据库,但仍然返回0

这是我的update语句代码(delete类似)

$data=Array(
'title'=>$entity->getTitle(),
'subtitle'=>$entity->getSubtitle(),
'text'=>$entity->getText(),
);
$response=$this->conn->exec(“更新条目集?其中id=?”,$data,$entity->getId());
if($response 1)抛出新异常('Update语句受影响'$response.'rows');
上面的代码将输出未捕获的异常:Update语句影响0行,即使该行实际上已更新

如果我对行进行注释,则会出现异常,一切正常(但我无法处理错误)

有人能帮忙吗


注:我使用的是Nette框架,所以带?'s的查询是有效的。。$entity的内容也有效

Pdo exec不支持准备好的语句。因此,
exec()
方法的任何行为都与PDO无关,而是属于您正在使用的任何框架。

这是有效的php
$response 1
@DevZer0-。@lvaroG.Vicario感谢手动函数原型中只显示了一个参数,
public int PDO::exec(string$语句)
我看不到它提到的任何地方可以动态绑定参数。@DevZer0 Nette框架覆盖
exec()
以实现预先准备好的语句功能。正如DevZer0所说,Nette即使在使用exec时也会执行预先准备好的语句。但是,返回值仍然为false(0),应该为true:-(我有同样的问题。因为,确切的语句在其他网站上运行良好,但在一个网站上显示错误。奇怪
$data = Array(
    'title' => $entity->getTitle(),
    'subtitle' => $entity->getSubtitle(),
    'text' => $entity->getText(),
);
$response = $this->conn->exec("UPDATE entries SET ? WHERE id = ?", $data, $entity->getId());
if($response <> 1) throw new Exception('Update statement affected '.$response.' rows');