1

对我来说这听起来很奇怪。我有一个简单的 PHP 脚本,可以将数据插入 MYSQL 表。通过 AJAX 从客户端接收到内容后,数据将存储在一个变量中:

$content=$_POST['content']; 
$sql="insert into contents values('$content')";
mysql_query($sql);

问题是如果内容包含'&'符号,&之前的子字符串将存储在MYSQL中,其余的字符串将被丢弃。如果我直接在 MYSQL 中尝试,那么它会存储完整的字符串 containsg & symbol.why?

4

2 回答 2

0

问题是mysql将'&'重新识别为AND。看一下这个:

$content = mysql_real_escape_string($_POST['content']); 
$sql = "insert into contents (column) values('$content')";
mysql_query($sql);
于 2013-11-03T13:38:54.583 回答
-1

首先,如果这个网站是活的,就把它拿下来,哈哈。这是典型的 sql 注入漏洞。

您需要mysqli现在使用而不是 mysql。

你使用它的方式是一样的,但它有一个非常酷的特性,叫做“真正的转义字符串”

它的作用是在将数据传递到数据库之前对其进行参数化

$content = $_POST['content']; 
$connection = new mysqli('ipaddress','username','password','database');
$content = $connection->real_escape_string($content);
$sql="insert into contents values('$content')";
$connection->query($sql);

这是一种更安全的数据传递方式

于 2013-11-03T13:39:15.883 回答