【问题标题】:Escaping values with apostrophes for MySQL insert为 MySQL 插入转义带有撇号的值
【发布时间】:2010-11-30 04:41:15
【问题描述】:

我正在尝试创建一些 SQL 插入语句,并且一些变量的名称如下:

  • "Aamma's Pastries"

在将值添加到 MySQL 数据库时,我想转义引号 (')。如何用 PHP 做到这一点?

【问题讨论】:

标签: php mysql stripslashes


【解决方案1】:

您已经接受了答案,但我想向您推荐一个更好的方法。使用 mysql_real_escape_string 之类的方法需要您始终记住在每个查询中每次都应用它;这很乏味且容易出错。

一种更简单的方法是使用parameterised statements,也可以确保一致性。这可以确保所有内容都被正确转义,并且还避免了您必须在查询中嵌入变量。

在 PHP 中,这可以与较新的 PDOMySQLi 库一起使用。其中,我更喜欢 PDO,因为它提供了灵活性(例如,我目前坚持使用 MySQL,但我不打算让我的应用程序永远以这种方式运行,并且使用 PDO 迁移将大大简化),但是有这里有很多关于 SO 的问题,涵盖了每个问题的优缺点。

【讨论】:

  • 非常感谢。添加和删​​除是我寻找最佳方法的原因
【解决方案2】:

【讨论】:

  • 请不要鼓励人们自己尝试转义字符串,向他们指出正确的方法,使用 PDO 或 MySQLi 进行参数化查询。
【解决方案3】:

请使用准备语句,让 mysql 自行处理转义,而您在代码级别进行操作

【讨论】:

    【解决方案4】:

    你可以使用这个函数来转义你需要的所有字符,这是 php 中的代码示例

    <?php
    $str = "Is your name O'reilly?";
    
    // Outputs: Is your name O\'reilly?
    echo addslashes($str);
    ?>
    

    【讨论】:

    • addslashes() 永远不应该用于清理 SQL 语句的输入。
    • @Harsha:我想不出任何时候没有更合适的功能。但我想可能有一个。
    猜你喜欢
    • 2011-05-12
    • 2012-01-28
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    相关资源
    最近更新 更多