从php特殊的char没有插入到mysql中

时间:2016-04-28 23:17:46

标签: php mysql

在PHP中

<input type="checkbox" name="CBage"  id="cbage2" value="and age >= 18 and age <= 24" checked/><label for="cbage2">18-24</label>

value =&#34;年龄&gt; = 18且年龄<= 24&#34;

在php中发帖后(我已经尝试过)

$age1 = $_POST['CBage'];
$age = mysql_real_escape_string(implode(",", $age1)); 

 $age = implode(",", $age1); 

表格创建为

CREATE TABLE `jobs` (
`age` varchar(200) COLLATE utf8_unicode_ci
)ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

在mysql中,它插入为

INSERT INTO jobs VALUES ('$age')

插入的值如下

and age = 18 and age,and age = 25 and age,

问题在于它没有正确插入值(它缺少&gt;&lt;以及最后的一些文字)

"and age >= 18 and age <= 24" but rather it inserted as "and age = 18 and age,and age = 25 and age,"

1 个答案:

答案 0 :(得分:0)

尝试使用htmlentities它将照顾所有特殊的字符'&lt;' (小于)成为'&lt;' '&GT;' (大于)成为'&gt;'然后在获取时使用html_entity_decode

来反转它

'<' (less than) becomes '&lt;' '>' (greater than) becomes '&gt;'然后在获取时使用html_entity_decode

来反转它

此外,重要的是停止使用Mysql_以避免严重的SQL注入危险 使用PDO或Mysqli准备好的陈述

$var1=htmlentities ($_POST['var1'])   ;


 $sth = $dbh->prepare('INSERT INTO table(field1) VALUES (?)');

    $sth->bindParam(1, $var1, PDO::PARAM_STR);
    $sth->execute();

取回

$sth = $dbh->query('SELECT * FROM table');

while($row = $sth ->fetch(PDO::FETCH_ASSOC)) {
    echo html_entity_decode($row['field1']); //etc...
}