首页 > 解决方案 > 在sql中为变量使用命名参数

问题描述

我的代码不起作用,我做错了什么,是否可以使用命名参数作为键。我正在尝试将其分配给我的 sql“其中用户名 = aaron”中的变量部分而不对其进行硬编码的位置,如果不是,请如何完成

$select = $conn->prepare("SELECT * FROM users WHERE :key =  :username ") ;
$select->execute([":key"=> "username", ":username"=> 'aaron' ]) ;

标签: phpsqlkeyvaluepair

解决方案


它不起作用,因为它将 :key 替换为“用户名”而不是用户名,因此您的查询最终将是:

SELECT * FROM users WHERE 'username' =  'aaron'

SQL 绑定最初是为了替换变量(改变的东西)而不是常量(在这个例子中你的列名)。

如果你仍然想做这样的事情,你需要自己编写代码,而不是使用 ->execute 方法。


推荐阅读