【问题标题】:mysql escaping single and double quotesmysql转义单引号和双引号
【发布时间】:2011-06-13 09:45:29
【问题描述】:

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

$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')

【问题讨论】:

标签: php mysql sql mysqldump


【解决方案1】:

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'])."')";

【讨论】:

    【解决方案2】:

    另一种选择是使用mysqli和prepared statements

    $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) 或字符串 (s)。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-30
        • 1970-01-01
        • 1970-01-01
        • 2013-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-26
        相关资源
        最近更新 更多