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 的初学者。

4

2 回答 2

0

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

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

谢谢。

于 2013-07-21T06:09:16.737 回答
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/

于 2013-07-20T08:53:39.750 回答