Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL准备语句-?在WHERE子句中_Mysql_Sql - Fatal编程技术网

MySQL准备语句-?在WHERE子句中

MySQL准备语句-?在WHERE子句中,mysql,sql,Mysql,Sql,这是一件愚蠢而简单的事情,但我没能用谷歌搜索出答案: PREPARE stmt1 FROM 'SELECT productCode, productName FROM products WHERE productCode = ?'; 最重要的是什么?最后呢不是SQL中的通配符,那么它是什么 - 编辑:谢谢 ?被称为参数占位符 语句可能不完整,因为数据值不完整 准备时未知用问号表示 用作参数标记的字符。在发表声明时 执行时

这是一件愚蠢而简单的事情,但我没能用谷歌搜索出答案:

 PREPARE stmt1 FROM 'SELECT productCode, productName

                 FROM products

                 WHERE productCode = ?';
最重要的是什么?最后呢不是SQL中的通配符,那么它是什么

- 编辑:谢谢

?被称为参数占位符

语句可能不完整,因为数据值不完整 准备时未知用问号表示 用作参数标记的字符。在发表声明时 执行时,提供特定的数据值,每个参数一个 在声明中


您是否在使用ORM,如Doctrine?ORM通常将占位符放在值的位置,并且只在执行之前应用占位符。

?用作事先未知值的占位符

假设你有两个?在您的语句中,您可以通过使用的索引为它们赋值来定义什么参数、什么值将取代它们?就像我们在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");
因此,现在运行时的查询将是:

从雇员中选择*,其中ename='John'和location='New York'

下一次如果我想更改这些值,我将执行以下操作:

ps.setString(1,"Williams");
ps.setString(2,"London");
现在我的问题是:

从雇员中选择*,其中ename='Williams'和location='London'