2011-06-29 9 views
25

Mam kwerendy mysqli z następującego kodu:php mysql bind-param, jak przygotować oświadczenie dla aktualizacji zapytania

 
$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'"); 

Jednak wszystkie dane pochodzące z dokumentów HTML, tak aby uniknąć błędów chciałbym użyj przygotowanego oświadczenia. Znalazłem w dokumentacji PHP, ale nie ma przykład UPDATE

mysqli stmt bind param

Odpowiedz

54

UPDATE działa tak samo jak wkładki lub wybierz. Wystarczy wymienić wszystkie zmienne na ?.

$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

oprócz oryginalnego pytania czy masz pojęcie, czy instrukcja przygotowania obsługuje standard Unicode? Potrzebuję przechowywać nazwy arabskie – Michael

+2

@ArabMichael: Spraw, by twoja baza danych używała kodowania UTF8, ustaw wewnętrzne kodowanie PHP na UTF8 ([iconv_set_encoding] (http://php.net/manual/en/function.iconv-set-encoding. php)) i powinieneś czuć się dobrze. –

+1

Michael odpowiada na ArabMichael: D – DannyG

Powiązane problemy