我有这个mySQL命令。这个?代表什么?它在php模型中使用。
UPDATE posts SET title=?,content=?,categoryID=?,date=? WHERE pID = ?
答案 0 :(得分:3)
答案是“准备好的陈述”。该语法适用于PHP以外的mySQL。以下是相关文档:
准备好的语句是非常有用的,并且可以在所有网页上使用所有 SQL查询时尽可能地使用它。
这是一篇很好的文章,解释了一个原因:除其他外,预准备语句有助于缓解SQL注入攻击:
答案 1 :(得分:1)
问号(?
)用于表示变量 - 它还充当占位符,您可以使用该占位符为相应列插入值。
来自PHP Docs:
SQL语句可以包含零个或多个命名(:name)或问题 标记(?)将替换实际值的参数标记 当语句执行时。你不能同时使用named和question 在同一SQL语句中标记参数标记;选择一个或 其他参数样式。 使用这些参数绑定任何用户输入,执行 不直接在查询中包含用户输入。