【问题标题】:PHP Mysql Auto Quote?PHP Mysql 自动报价?
【发布时间】:2010-11-25 11:19:06
【问题描述】:

在mysql数据库中插入一行时,字符串值需要用引号括起来,而整数不需要。

是否有任何类或库可以自动处理此问题,以便我可以将字段名和值的数组传递给第 3 方函数,而不必担心将字符串值放在引号中?

谢谢,

【问题讨论】:

    标签: php mysql string quotes


    【解决方案1】:

    您需要担心的不仅仅是引用;你需要担心 SQL 注入。

    对于新代码,请使用 PDO 而不是 mysql_mysqli_ 函数。在 PDO 中,使用准备好的语句(PDOStatement 对象)。

    使用准备好的语句,您无需将内容括在引号中,它会阻止 SQL 注入。

    【讨论】:

      【解决方案2】:

      如果你使用PDO,那么你就不用担心这样的事情了。

      查看PDO::prepare 中的一些示例。

      【讨论】:

        【解决方案3】:

        当我使用 drupal 时,db_query("SELECT col FROM tab WHERE id=%d",$id) 的默认行为会为您处理。

        这类似于首先在查询中使用sprintfmysql_real_escape_string。你可以自己实现它,从code they show,注意他们使用preg_replace_callback()方法,你可以点击它..

        传统方式,如果忽略PDO(不推荐):

        <?php
        // Connect
        $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
            OR die(mysql_error());
        
        // Query
        $query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
                    mysql_real_escape_string($user),
                    mysql_real_escape_string($password));
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-08-09
          • 2023-03-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多