这是一件非常简单的事情,但我没有给出答案:
PREPARE stmt1 FROM 'SELECT productCode, productName
FROM products
WHERE productCode = ?';
这是什么?在末尾? '?'在SQL中不是通配符,所以它是什么......
- 编辑:谢谢!
答案 0 :(得分:2)
?
称为参数占位符。
声明可能不完整,因为数据值是 准备时未知的是问号 用作参数标记的字符。当时的声明 执行时,您提供特定的数据值,每个参数一个 在声明中。
答案 1 :(得分:0)
您使用的是诸如Doctrine之类的ORM吗? ORM通常将占位符(?)替换为值,并仅在执行之前应用它们。
答案 2 :(得分:0)
?
用作预先未知的值的占位符。
假设您的语句中有两个?
,那么您可以通过使用?
索引为它们分配值来定义代替它们的参数(正如我们所做的那样) JAVA)
我使用Java的一个例子让你了解PreparedStatement:
我的问题是:
PreparedStatement ps = connection.prepareStatement(
`select * from employee where ename = ? and location = ?`);
所以我在执行查询时为ename
和location
定义了要检查的值的占位符。
现在我设置值而不更改我的查询(就像在java中一样)
ps.setString(1,"John");
ps.setString(2,"New York");
所以现在运行时的查询将是:
select * from employee where ename = 'John' and location = 'New York'
下次如果我想更改值,那么我会这样做:
ps.setString(1,"Williams");
ps.setString(2,"London");
所以现在我的查询将是:
select * from employee where ename = 'Williams' and location = 'London'