プリペアドステートメントは、1つのMySQLクエリのみを実行できます。さまざまな変数で必要な数のステートメントを準備できます:
$stmtUser = $sql->prepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?)");
$stmtProc = $sql->prepare("INSERT INTO process (id_user, idp) VALUES (?,?);");
そして、後でそれらを実行します。両方が実行できない限り、どちらも実行されないようにする場合は、Thomasが言ったように、トランザクションを調べる必要があります。
また、一般的なヒント:「非オブジェクトでのメンバー関数の呼び出し」は、prepare()
で発生する標準エラーです。 失敗するため、$stmt
実際にはプリペアドステートメントオブジェクトではありません。これは通常、prepare()
でエラーを探す必要があることを意味します 後で何よりもステートメント。