我有一个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 :(得分: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);
感谢。