&安培;不能通过PHP插入MYSQL

时间:2013-11-03 13:31:04

标签: php

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

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

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

2 个答案:

答案 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);

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