2015-09-27 54 views

回答

1

你的代碼有兩個問題。

首先,你處理錯誤的方式是最糟糕的。並因此剝奪自己得到有用的錯誤消息可以幫助你。爲了在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'); 
+0

嘿,謝謝你指出!我只是開始用我的冒險與PHP和我還沒有關於錯誤處理的想法,你可以簡要解釋我,並幫助我理解爲什麼這是以上最糟糕的方式?謝謝!我在問,因爲我按照你的建議做了一個修復,並刪除了屬性和佔位符,但它仍然不起作用。 – randomuser1

相關問題