有人可以解释一下?在mySQL中做了什么?

时间:2014-03-16 04:30:08

标签: php sql

我有这个mySQL命令。这个?代表什么?它在php模型中使用。

UPDATE posts SET title=?,content=?,categoryID=?,date=? WHERE pID = ?

2 个答案:

答案 0 :(得分:3)

答案是“准备好的陈述”。该语法适用于PHP以外的mySQL。以下是相关文档:

准备好的语句是非常有用的,并且可以在所有网页上使用所有 SQL查询时尽可能地使用它。

这是一篇很好的文章,解释了一个原因:除其他外,预准备语句有助于缓解SQL注入攻击:

答案 1 :(得分:1)

问号(?)用于表示变量 - 它还充当占位符,您可以使用该占位符为相应列插入值。

来自PHP Docs

  

SQL语句可以包含零个或多个命名(:name)或问题   标记(?)将替换实际值的参数标记   当语句执行时。你不能同时使用named和question   在同一SQL语句中标记参数标记;选择一个或   其他参数样式。 使用这些参数绑定任何用户输入,执行   不直接在查询中包含用户输入