私はこの登録関連のものを持っています。ユーザーが[ユーザーの追加]をクリックするとすぐに3つのテーブルにデータを入力したいと思います。
テーブルは次のとおりです。
users
roles
status
user_role
user_status
システムは、次のユーザーテーブルのようにデータを挿入する必要があり ます。
username
password
user_roles
user_id
default value
ユーザーステータス
user_id
default value
私はこれを機能させるためにpdobegintransactionとcommitを使用しました...これは2つのテーブルで使用した場合はうまく機能しましたが、別のテーブルを使用して同じコードパターンを実行すると、まったく機能しませんでした。
コードは次のとおりです。
$this->db->beginTransaction();
$sth = $this->db->prepare("INSERT INTO users (username, password)
VALUES (:user,:pass)");
$sth->execute(array(
':user'=> $data['user'],
':pass'=> Hash::create('sha256', $data['pass'], HASH)
));
$sth = $this->db->prepare("INSERT INTO user_role (user_id, role_id) VALUES (:user, :role)");
$sth->execute(array(
':user' => $this->db->lastInsertId(),
':role' => 3
));
$sth = $this->db->prepare("INSERT INTO user_status (user_id, status_id) VALUES (:user, :status)");
$sth->execute(array(
':user' => $this->db->lastInsertId(),
':status' => 1
));
$this->db->commit();
問題は何だと思いますか。これもある種の構文エラーではないかと思いますが、見つかりませんでした。最後の手段は、これが3つのテーブルで機能するかどうかもわからないためです。ありがとうございました!