mysql转义单引号和双引号

时间:2011-01-21 20:35:22

标签: php mysql sql mysqldump

我有一个脚本,我正在编写将某些字段移动到新的数据库,如

$results = mysql_query ( "SELECT body, title  FROM $source_db.Post" );
while ($row = mysql_fetch_array($results)) {
if(mysql_num_rows($users_result) > 0){
    $insert = "INSERT INTO wp_posts (`body`,`title`) VALUES ('{$row['body']}', '{$row['row']}')";
    mysql_query($insert);
    }
}

但正如您所看到的,由于单引号和双引号,查询将每次都中断,是否有像herdok这样的问题的解决方案

INSERT INTO wp_posts (`body`,`title`)
            VALUES
                ('Here are the final returns from today's ...<br /><br />he stayed home...<br />
<div class="entry-content">
<div class="entry-body">', 'something')

3 个答案:

答案 0 :(得分:6)

mysql_real_escape_string就是这样做的。

PHP: mysql_real_escape_string

$insert = "INSERT INTO wp_posts ('body','title') VALUES ('".mysql_real_escape_string($row['body'])."', '".mysql_real_escape_string($row['row'])."')";

答案 1 :(得分:1)

另一种选择是使用mysqli和预备语句

$stmt = $this->db->prepare("insert into table (id,name,longstring) values (?,?,?));
$stmt->bind_param('iss',$row["id"],$row["name"],$row["body"]);
$stmt->execute();

mysqli会将指定的参数绑定到?在预准备语句中作为整数(i)或字符串。

答案 2 :(得分:0)

最安全的方法是使用绑定参数。 Bobby Tables has examples