2016-07-28 8 views
1

トランザクションを使用しようとするとこのエラーが発生します。トランザクションでMYSQL構文エラーが発生しましたか?

SQL構文にエラーがあります。 が近く を使用する権利構文についてはMySQLサーバのバージョンに対応していること取扱説明書をご確認ラインで2

「をパゴス(ユーザID、pagoMonto、pagoFecha、 pagoMedioUtilizado、pagoCuentaO。INSERT INTO」これは私のクエリです「しようとは:m。私はInnoDBのように、すべての私のテーブルを持っている

START TRANSACTION; 
INSERT INTO pagos (userID, pagoMonto, pagoFecha, pagoMedioUtilizado, pagoCuentaOrigen, pagoSucursal, pagoCodigo) 
VALUES('$userID', '$pagoMonto', '$pagoFecha', '$pagoMedioUtilizado', '$pagoCuentaOrigen', '$pagoSucursal', '$pagoCodigo'); 
INSERT INTO pagosVerificados (pagoID, userID, cursoID) 
VALUES(LAST_INSERT_ID(), '$userID', '$cursoID'); 
COMMIT; 

MySQLのバージョン:5.6.30

私は、変数の内容に問題があるかどうかを確認するためにテストしていますので、私はそれをプリントアウトしてきました:

UserID: 16 
cursoID: 15 
pagoMonto: 25 
pagoFecha: 2016-05-01 
pagoMedioUtilizado: efectivo 
pagoCuentaOrigen: 216852 
pagoSucursal: 55 
pagoCodigo: 55555 

私は5.6バージョンのthe manualで読ん構文を使用しています。エラーはどこですか?

+0

はあなたが何の単一引用符がないことを確認するために、変数をスクラブしましたか? –

+0

はい、ありません。 – Rosamunda

+0

私はMySQLのトランザクションでそれほど作業していませんが、それは1つの "クエリ"として実行する必要がありますか? (実際は、私は2つの挿入に気づきました;あなたはそれらを1つのクエリとして実行することはできません)。 – Uueerdo

答えて

1

私はあなたが1回の呼び出しで複数のステートメントを実行しようとしていると考えています。それをしないでください。呼び出しごとに1つのステートメントを実行します。

使用PDO取引のための方法、および代わりにSQL文字列の中にPHP変数を補間する準備クエリを使用します。

$pdo->beginTransaction(); 

$stmt = $pdo->prepare("INSERT INTO pagos 
    SET userID=?, pagoMonto=?, pagoFecha=?, pagoMedioUtilizado=?, 
     pagoCuentaOrigen=?, pagoSucursal=?, pagoCodigo=?"); 
$stmt->execute([$userID, $pagoMonto, $pagoFecha, $pagoMedioUtilizado, 
    $pagoCuentaOrigen, $pagoSucursal, $pagoCodigo]); 

$stmt = $pdo->prepare("INSERT INTO pagosVerificados 
    SET pagoID=LAST_INSERT_ID(), userID=?, cursoID=?"); 
$stmt->execute([$userID, $cursoID]); 

$pdo->commit(); 
関連する問題