这听起来很奇怪。我有一个简单的PHP脚本,可以将数据插入到MYSQL表中。 在通过AJAX从客户端接收内容后,数据存储在变量中:
$content=$_POST['content'];
$sql="insert into contents values('$content')";
mysql_query($sql);
问题是如果内容包含'&'符号,前后的子串存储在MYSQL中,其余的字符串将被丢弃。如果我直接在MYSQL中尝试,那么它会存储完整的字符串包含& symbol.why?
答案 0 :(得分:0)
问题是mysql regocnizes'&'作为AND。看看这个:
$content = mysql_real_escape_string($_POST['content']);
$sql = "insert into contents (column) values('$content')";
mysql_query($sql);
答案 1 :(得分:-1)
首先,如果这个网站是现场的,请将其删除lol。这是经典的sql注入漏洞。
您现在需要使用mysqli
而不是mysql。
你使用它的方式是一样的,但它有一个非常酷的功能叫'real escape string'
它的作用是在将数据传递到数据库之前对数据进行参数化
$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);
这是传递数据的更安全的方式