PHPとmySQLを使用してSQLトランザクションに問題があります。ここに私の文は次のとおりです。Mysqliは、SQL文が有効であっても、エラーを通知する準備をしていますか?
START TRANSACTION;
INSERT INTO listings (title, price, seller, description, time, featured)
VALUES (?, ?, ?, ?, ?, 0);
SELECT @listingid:=LAST_INSERT_ID();
INSERT INTO pictures (listid, primarypic)
VALUES (@listingid, 1);
COMMIT;
この文は正常に動作している間、私は直接(マークに置き換えて?)のphpMyAdminを使用してそれを置くとき、私が
$stmt = $mysqli->prepare("statement");
を呼び出すときに「文」に置き換え失敗するようです上記の声明と一緒に。 $ stmtのbind_paramに到達する前に失敗するという事実は、それがパラメータに問題ではなく、むしろクエリであると信じています。それは場合に役立ちます。ここ
は、正確なエラーです:
あなたのSQL構文でエラーが発生しています。近くに使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してくださいラインで、あなたの助けを事前に2
感謝「を出品(タイトル、価格、販売者、説明、時間、特色)。INSERT INTO」 !
+1また、[mysqli_prepare's docs](http://www.php.net/manual/en/mysqli.prepare.php)から:_ "クエリは単一のSQL文"_と_"注意:ステートメントに終わりのセミコロンや\ gを追加しないでください。 "_ – Wiseguy
$ mysqli-> commit(); $ stmt-> execute()のあとに; ? –
@Wiseguy良いキャッチ。どのように私はそれを逃したか分からない。私はストアドプロシージャを作成する必要がありますね。 –