1

ActiveCollab のモジュールに取り組んでいます。テーブルの1つで更新コマンドを実行しようとする今日まで、すべてがうまくいきました。コマンドは次のとおりです。

UPDATE `acx_credit_card_vault_recurring` SET `status`='1' WHERE `id`='2'

私の不愉快な驚きのために、それはうまくいきませんでした。同じコマンドをphpmyadmin SQLテキストボックスにコピーペーストして試してみましたが、問題なく実行できました。

テーブルを完全に削除し、スクリプトを使用して作成して、権限に関連する問題 (?) がないことを確認しました。

$result = DB::execute("CREATE TABLE IF NOT EXISTS `acx_credit_card_vault_recurring` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`invoice_object_id` int(11) NOT NULL,
`ccv_id` int(11) NOT NULL,
`status` int(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0");

pr($result);

//Then i inserted a few records, again through module script and tried the update once again.

$result2 = DB::execute("INSERT INTO `acx_credit_card_vault_recurring` (`invoice_object_id`, `ccv_id`, `status`) VALUES
(1, 1, 0),
(4, 2, 0)");

pr($result2);

$result3 = DB::execute("UPDATE `acx_credit_card_vault_recurring` SET `status`='1' WHERE `id`='2'");
pr($result3);

上記のすべての pr(print_r) 関数は 1(true) を出力し、テーブルの作成、データの取り込み、更新が一度に成功しました。ここで、CREATE および INSERT コード ブロックをコメント アウトし、UPDATE ステートメントを単独で実行しましたが、また不愉快な思いをしたことに、再び機能しませんでした。

それに加えて、最初と最後のステートメント (CREATE & UPDATE) を一緒に実行すると、UPDATE は正常に機能します。しかし、単独で実行すると機能しません。また、実行するたびに true(1) が返されます。これは、クエリが「エラーなしで」実行されたことを意味しますが、レコードは更新されません。

この問題はこのテーブルでのみ発生しているようで、SQL 更新ステートメントは同じデータベースの他のテーブルで正常に機能します。

ここで多くの質問で同じ問題を提起している多くのユーザーを見ることができますが、満足のいく答えを見つけることができませんでした. 回答のほとんどは、構文、一重引用符、ニンジンなどを確認するようにアドバイスされていますが、私の場合は問題ではないと思います。

4

2 に答える 2