我从外部XML文件中获取数据,因此无法进行更改。我也需要所有特殊字符。
这是XML
<item>
<name>Lucy</name>
<embed><iframe src='http://website.com style='something:somehow'></iframe></embed>
</item>
这是sql表
$sql = "CREATE TABLE IF NOT EXISTS `models`(
`model_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`model_username` VARCHAR(250) NOT NULL,
`model_embed` TEXT NOT NULL )";
XML到SQL
foreach ($items as $item) {
$name=$item->name;
$iframe=$item->embed;
$ins = " INSERT INTO `models` (`model_username`, `model_embed`)
VALUES ('$name', '$iframe')
}
我收到此错误
1064:您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便使用&{39} http://website.com style =&#39;某些东西:某种方式&#39;在第9行
答案 0 :(得分:1)
尽管如此,@ Fred-ii-发现错误的关闭原因
您的代码中出现了许多问题。
首先,您没有正确关闭变量:
$ins = " INSERT INTO `models` (`model_username`, `model_embed`)
VALUES ('$name', '$iframe')
解决方法是:
$ins = "INSERT INTO `models` (`model_username`, `model_embed`)
VALUES ('$name', '$iframe')";
注意结束双引号和分号作为变量的结尾。
尽管如此,与SQL injection相关的问题闭包有点有效,因为错误消息指出:
'http://website.com style ='something:somehow'
当您将数据直接输入到查询中时,您会遇到格式错误,因为pre-maturley关闭了您的SQL语法,这会在您的结束时触发一些意外错误。解决方案是交换到可以在MySQLi(MySQL改进库)或PDO中使用的预处理语句。
答案 1 :(得分:-1)
使用以下功能:
MYSQL_ESCAPE_STRING($ String)