Một câu lệnh đã chuẩn bị chỉ có thể thực hiện một truy vấn MySQL. Bạn có thể chuẩn bị bao nhiêu câu lệnh tùy ý trong các biến khác nhau:
$stmtUser = $sql->prepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?)");
$stmtProc = $sql->prepare("INSERT INTO process (id_user, idp) VALUES (?,?);");
Và sau đó thực hiện chúng sau. Nếu bạn muốn đảm bảo rằng cả hai đều không chạy trừ khi cả hai đều có thể chạy, thì bạn cần phải xem xét các giao dịch, như Thomas đã nói.
Ngoài ra, một mẹo chung:"lệnh gọi hàm thành viên trên một đối tượng không phải" là lỗi chuẩn mà bạn gặp phải khi prepare()
không thành công và vì vậy $stmt
thực ra không phải là một đối tượng câu lệnh được chuẩn bị sẵn. Điều đó thường có nghĩa là bạn cần tìm lỗi trong prepare()
của mình tuyên bố hơn là bất cứ điều gì sau đó.