我的代码无法正常运行我是否可以使用命名参数作为密钥。我试图把它变成我可以在我的sql中为变量部分赋值的地方"其中username = aaron"没有硬编码,如果不能如何实现,请
$select = $conn->prepare("SELECT * FROM users WHERE :key = :username ") ;
$select->execute([":key"=> "username", ":username"=> 'aaron' ]) ;
答案 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' ]) ;