0

嗨,我正在编写一个脚本来添加一些插件,但是在一个 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']
        );
    }
4

3 回答 3

3

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

为了:

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

:2对应于$this->thumbsPerPage

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

于 2013-07-07T22:59:42.577 回答
1

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

于 2013-07-07T22:58:48.230 回答
0

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

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

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

于 2013-07-07T23:02:12.807 回答