有人能解释一下是什么吗?s do in mySQL?



我有这个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语句中标记参数标记;随便选一个其他参数样式。使用这些参数绑定任何用户输入不要在查询中直接包含用户输入。

最新更新