2014-09-01 129 views
-4

我將數組中的變量從foreach循環中輸入到數據庫中。有時候,這些變量中有一個撇號。我知道我需要他們這個樣子,因爲他們得到插入:用PHP中的雙撇號替換包含單撇號的變量

("INSERT INTO table (lastname) VALUES('O''Brien')") 

我需要沿着線的東西:

str_replace("'","''","$lastname"); // $lastname happens to equal O'Brien 

但單引號最終使其認爲房間之間是一個字符串。我該如何解決?謝謝!

+0

'$海峽=和addslashes($海峽);' – andrew 2014-09-01 01:22:35

+1

使用適當的轉義像MySQL(我)_real_escape_string或使用準備好的語句。 – MrTux 2014-09-01 01:23:04

+2

addslashes?!?!你在開玩笑嗎? – 2014-09-01 01:31:12

回答

1

假設你正在使用mysqli的(因爲沒有人會使用mysql的,右),你應該準備一份聲明一次,綁定參數,然後在你的循環執行。

這裏有一個基本的例子...

// assuming $con is a valid mysqli instance 

$stmt = $con->prepare('INSERT INTO `table` (lastname) VALUES (?)'); 
$stmt->bind_param('s', $lastName); 

// assuming you have a collection of last names in $names 
foreach ($names as $lastName) { 
    $stmt->execute(); 
}