【问题标题】:MySQL : named parameters with PREPARE command?MySQL:使用 PREPARE 命令命名参数?
【发布时间】:2011-04-12 09:39:32
【问题描述】:

是否可以在 MySQL 中使用 PREPARE 命令和 命名参数,例如 PHP 中的 PDO

这是我的例子:

 SET @s = 'SELECT * FROM MY_TABLE WHERE my_column_1 = ? AND my_column_2 = ? ';
 PREPARE stmt2 FROM @s;
 SET @a = 54;
 SET @b = 89';
 EXECUTE stmt2 USING @a, @b;

有没有可能做这样的事情:

 SET @s = 'SELECT * FROM MY_TABLE WHERE my_column_1 = :value1 AND my_column_2 = :value2 ';

【问题讨论】:

标签: mysql parameters prepared-statement


【解决方案1】:

我建议查看有关此的文档。 https://dev.mysql.com/doc/refman/8.0/en/prepare.html

该文档没有提及除?s 之外的任何其他绑定变量的方法,但它确实提到您可以使用用户定义的变量。

SET @s = 'SELECT * FROM MY_TABLE WHERE my_column_1 = @a AND my_column_2 = @b ';
PREPARE stmt2 FROM @s;
SET @a = 54;
SET @b = 89';
EXECUTE stmt2;

产生相同的输出并且变量只在语句执行时被评估,它只是缺乏将变量绑定到查询的明确性。

【讨论】:

  • 我不清楚这是否具有性能影响。谷歌搜索,但没有找到任何关于使用 @a 是否会创建优化的查询的讨论,就像 ?USING 一样。
猜你喜欢
  • 2017-02-21
  • 2011-06-29
  • 2022-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多