2013-07-20 154 views
0

我有一個php代碼,它會在數據庫表中插入一個值。我正在使用MySql。在這裏,我必須存儲一個包含'$'符號的字符串(例如$ V#CDFBvQi)。但是,當我存儲這個值時,在存儲之前,我想用'\ $'替換子字符串'$',以便在存儲之前這個單詞將像這個\ $ V#CDFBvQi。我使用下面的PHP代碼來替換子字符串。

$dbp = $_POST['varname']; // here $dbp value is $V#CDFBvQi. 
if (strpos($dbp, '$') !== false) { 
    $dbp = str_replace("$", "\\$", $dbp); 
} 
echo $dbp; //here $dbp value is \$V#CDFBvQi. 

此代碼正常工作。
但是當我插入值$ dbp(現在是\ $ V#CDFBvQi)時,我的數據庫表只包含$ V#CDFBvQi。這是我的MySql插入代碼。

$link = mysql_connect("localhost", "root", "root"); 
mysql_select_db("dbsamplename", $link); 
mysql_query("insert into sampletable values('".$dbp."')"); 

我該怎麼辦?請指教,因爲我是PHP的初學者。

+0

使用「mysql_real_escape_string」或更改爲具有參數化查詢的不被棄用的MySQL API(通常爲mysqli或PDO)。 –

回答

0

不推薦使用Mysql擴展,不應使用它。使用mysqli和準備好的語句,你不必擔心轉義字符串。我相信下面的代碼將解決你的問題。

例子:

$stmt = $mysqli -> prepare("insert into sampletable values(?)"); 
/* Bind parameters */ 
$stmt -> bind_param("s", $dbp); 
/* Execute it */ 
$stmt -> execute(); 

完全的例子看:http://mattbango.com/notebook/code/prepared-statements-in-php-and-mysqli/

0

謝謝你給的解決方案,但是這解決了我的問題。

$dbp = str_replace("$", "\\\\$", $dbp); 

謝謝。