2011-06-29 32 views
25

Tôi có một truy vấn mysqli với đoạn mã sau:php mysql bind-param, làm thế nào để chuẩn bị tuyên bố cho truy vấn cập nhật

 
$db_usag->query("UPDATE Applicant SET phone_number ='$phone_number', 
street_name='$street_name', city='$city', county='$county', zip_code='$zip_code', day_date='$day_date', month_date='$month_date', 
year_date='$year_date' WHERE account_id='$account_id'"); 

Tuy nhiên tất cả các dữ liệu được chiết xuất từ ​​các tài liệu HTML như vậy để tránh các lỗi tôi muốn sử dụng một tuyên bố chuẩn bị. Tôi tìm thấy tài liệu PHP nhưng không có ví dụ CẬP NHẬT

mysqli stmt bind param

Trả lời

54

Một UPDATE hoạt động giống như một chèn hoặc chọn. Chỉ cần thay thế tất cả các biến bằng ?.

$sql = "UPDATE Applicant SET phone_number=?, street_name=?, city=?, county=?, zip_code=?, day_date=?, month_date=?, year_date=? WHERE account_id=?"; 

$stmt = $db_usag->prepare($sql); 

// This assumes the date and account_id parameters are integers `d` and the rest are strings `s` 
// So that's 5 consecutive string params and then 4 integer params 

$stmt->bind_param('sssssdddd', $phone_number, $street_name, $city, $county, $zip_code, $day_date, $month_date, $year_date, $account_id); 
$stmt->execute(); 

if ($stmt->errno) { 
    echo "FAILURE!!! " . $stmt->error; 
} 
else echo "Updated {$stmt->affected_rows} rows"; 

$stmt->close(); 
+0

ngoài câu hỏi ban đầu, bạn có bất kỳ ý tưởng nào nếu câu lệnh chuẩn bị có hỗ trợ unicode không? Tôi cần lưu trữ một số tên arabic – Michael

+2

@ArabMichael: Làm cho cơ sở dữ liệu của bạn sử dụng mã hóa UTF8, đặt mã hóa nội bộ của PHP thành UTF8 ([iconv_set_encoding] (http://php.net/manual/en/function.iconv-set-encoding. php)) và bạn sẽ ổn thôi. –

+1

Michael trả lời cho ArabMichael: D – DannyG

Các vấn đề liên quan