在“WHERE column =?”中MySQL中问号的意义是什么?
我正在解剖一些代码,碰到这个,
$sql = 'SELECT page.*, author.name AS author, updator.name AS updator ' . 'FROM '.TABLE_PREFIX.'page AS page ' . 'LEFT JOIN '.TABLE_PREFIX.'user AS author ON author.id = page.created_by_id ' . 'LEFT JOIN '.TABLE_PREFIX.'user AS updator ON updator.id = page.updated_by_id ' . 'WHERE slug = ? AND parent_id = ? AND (status_id='.Page::STATUS_REVIEWED.' OR status_id='.Page::STATUS_PUBLISHED.' OR status_id='.Page::STATUS_HIDDEN.')';
我在想什么“?” 在WHERE语句中。 它是某种参数持有者吗?
编写的语句使用“?” 在MySQL中允许绑定参数的声明。 高度重视,如果使用得当,更安全的SQL注入。 这也允许更快的SQL查询,因为请求只需编译一次即可重用。
问号表示稍后将被replace的参数。 使用参数化查询比将参数直接embedded查询更安全。
SQL Server调用这个参数化查询,而Oracle调用它绑定variables。
用法因您执行查询的语言而异。</