我有这个mySQL命令。"?"代表什么?在php模型中使用
UPDATE posts SET title=?,content=?,categoryID=?,date=? WHERE pID = ?
答案是"准备好的语句"。该语法适用于PHP和mySQL之外。以下是相关文档:
- http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html
预处理语句是一个非常有用的东西,并且应该尽可能与所有网页上的所有 SQL查询一起使用。
这里有一篇很好的文章,解释了其中一个原因:除了其他事情之外,准备好的语句有助于减轻SQL注入攻击:
- http://software-security.sans.org/developer-how-to/fix-sql-injection-in-php-using-prepared-statements
问号(?
)用于表示变量-它也充当占位符,您可以使用它为相应的列插入值。
From PHP Docs:
SQL语句可以包含零个或多个命名(:name)或问题mark (?)参数标记,实际值将被替换当语句执行时。你不能同时使用名和疑问句在同一SQL语句中标记参数标记;随便选一个其他参数样式。使用这些参数绑定任何用户输入不要在查询中直接包含用户输入。