在sql中使用变量的命名参数

时间:2018-05-24 23:31:01

标签: php sql keyvaluepair

我的代码无法正常运行我是否可以使用命名参数作为密钥。我试图把它变成我可以在我的sql中为变量部分赋值的地方"其中username = aaron"没有硬编码,如果不能如何实现,请

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

2 个答案:

答案 0 :(得分:1)

它无效,因为它会替换:键入“用户名”而非用户名,因此您的查询最终将成为:

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

SQL绑定最初是为了替换变量(更改的东西)而不是常量(在此示例中为您的列名)。

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

答案 1 :(得分:1)

解决方案

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