php,mysql插入$ sign无法正常工作

时间:2013-07-20 08:39:45

标签: php mysql

我有一个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的初学者。

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

感谢您提供解决方案,但这解决了我的问题。

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

感谢。