0
我寫了下面的PHP代碼:爲什麼當我有一個接一個的mysqli查詢時,我只能執行第一個?
,並通過該代碼會後,我的瀏覽器重定向我的頁面register_success.php,但在我的數據庫,我只有新的客戶,在client_addr條目丟失。什麼會導致這種情況?我是否必須以某種方式重置mysqli?謝謝!
我寫了下面的PHP代碼:爲什麼當我有一個接一個的mysqli查詢時,我只能執行第一個?
,並通過該代碼會後,我的瀏覽器重定向我的頁面register_success.php,但在我的數據庫,我只有新的客戶,在client_addr條目丟失。什麼會導致這種情況?我是否必須以某種方式重置mysqli?謝謝!
你的代碼有兩個問題。
首先,你處理錯誤的方式是最糟糕的。並因此剝奪自己得到有用的錯誤消息可以幫助你。爲了在mysqli中正確處理錯誤,你必須擺脫所有這些無用的if,並告訴mysqli在發生錯誤時拋出異常。
其次,錯誤本身很簡單:在INSERT查詢中有四個字段時,您將三個變量傳遞到第二個查詢中。你必須從查詢中取出addr_id和相應的佔位符
所以,代碼會是。
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$stmt = $mysqli->prepare("INSERT INTO client (username, email, password) VALUES (?,?,?)");
$stmt->bind_param('sss', $username, $email, $password);
$stmt->execute();
$client_id = $mysqli->insert_id;
$stmt = $mysqli->prepare("INSERT INTO client_addr (client_id, client_name, contact_name) VALUES (?,?,?)");
$stmt->bind_param('sss', $client_id, $_POST['company'], $_POST['contact']);
$stmt->execute();
header('Location: ./register_success.php');
嘿,謝謝你指出!我只是開始用我的冒險與PHP和我還沒有關於錯誤處理的想法,你可以簡要解釋我,並幫助我理解爲什麼這是以上最糟糕的方式?謝謝!我在問,因爲我按照你的建議做了一個修復,並刪除了屬性和佔位符,但它仍然不起作用。 – randomuser1