0

PDO::exec() メソッドで問題が発生しました。私はそれを1時間理解しようとしていますが、まだどこにも行きません. それはおそらく私が見逃している小さなものになるでしょう。

exec を使用して、データベース内の 1 つの行を更新 (および別のコードで削除) します。マニュアルによると、exec は影響を受けた行数を返す必要があります。しかし、私の場合 (更新と削除の両方)、exec が実行され、データベースが物理的に更新されますが、それでも 0 が返されます。

更新ステートメントのコードは次のとおりです(削除も同様です)

$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');

上記のコードは、行が実際に更新されているにもかかわらず、Uncaught exception: Update statement affected 0 rows を出力します。

例外を除いてその行にコメントすると、すべて正常に実行されます (ただし、エラーを処理できません)。

誰も助けることができますか??

PS.: 私は Nette Framework を使用しているので、? を使用したクエリは有効です.. $entity の内容も有効です

4

1 に答える 1

-1

Pdo exec は準備済みステートメントをサポートしていません。したがって、exec()メソッドの動作は PDO とは何の関係もありませんが、使用しているフレームワークに属します。

于 2013-07-10T07:26:55.297 に答える