2013-07-20 116 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); 

谢谢。