嗨,我正在编写一个脚本来添加一些插件 但在一个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']
);
}
答案 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连接库上的文档,以确保这是正确的参数语法。