在这个用PHP编写的MySQL语句中,“:”是什么意思

时间:2013-07-07 22:55:49

标签: php mysql

嗨,我正在编写一个脚本来添加一些插件 但在一个mysql语句中,我不明白一些字符 我读了mysql手册,但我没有得到它 可以任何人解释一下是什么:1指或:3 它的意思是: 感谢

else { // -------------------------------------------------------- user/all
        $conditions = '';
        if( !empty($this->user) ) {
            $conditions .= ' AND i.user = :3';
        }

        $this->thumbs = DB::query(
            'SELECT SQL_CALC_FOUND_ROWS
                i.logged, UNIX_TIMESTAMP(i.logged) AS loggedTS,
                i.keyword, i.thumb, i.score, i.votes,
                u.name AS userName
            FROM '.TABLE_IMAGES.' i
            LEFT JOIN '.TABLE_USERS.' u
                ON u.id = i.user
            WHERE 1 '.$conditions.'
            ORDER BY i.id DESC
            LIMIT :1, :2',

            $this->page * $this->thumbsPerPage,
            $this->thumbsPerPage,
            $this->user['id']
        );
    }

3 个答案:

答案 0 :(得分:3)

从技术上讲,它不是SQL的一部分。这是一个参数化字段。它引用传递给DB::query的辅助参数,并且可能允许您安全地将用户输入传递到查询中,而不会有SQL注入的风险。

按顺序:

:1对应$this->page * $this->thumbsPerPage

:2对应$this->thumbsPerPage

:3对应$this->user['id']

答案 1 :(得分:1)

在这种情况下,:2引用赋予函数的第三个参数$this->thumbsPerPage,而:3引用$this->user['id']。它不是MySQL的东西,只是DB::query函数所做的事情。

答案 2 :(得分:0)

冒号有时用于指定值应该由参数替换。请注意,DB :: query()的第一个参数是字符串查询,接下来的三个是所有参数。这些参数使用:NUMBER指定格式放入SQL字符串。

在您的示例中,:3将替换为$ this-> user [' id'],因为它是传递给查询的第三个参数。

但是,在参数化的SQL查询中?通常用于此目的。检查您正在使用的DB连接库上的文档,以确保这是正确的参数语法。