这是一件很简单的事情,但我没能在谷歌上找到答案:
PREPARE stmt1 FROM 'SELECT productCode, productName
FROM products
WHERE productCode = ?';
是什么 ?在最后?“?” 不是 SQL 中的通配符,所以它是什么......
——编辑:谢谢!
?
用作预先未知的值的占位符。
假设?
您的语句中有两个,那么您可以通过使用索引为它们分配值来定义哪个参数将代替它们的值?
(就像我们在 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'
你在使用像 Doctrine 这样的 ORM 吗?ORM 通常使用占位符 (?) 代替值,并且仅在执行前应用它们。