插入' sql中的字符

时间:2014-08-18 19:02:31

标签: php mysql sql xml

我从外部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行

2 个答案:

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