мой код не работает, я делаю что-то не так, возможно ли использовать именованные параметры для ключа. Я пытаюсь сделать это, где я могу присвоить значение переменной части в моем sql «где username = aaron» без жесткого кодирования, если нет, как это можно сделать, пожалуйста
$select = $conn->prepare("SELECT * FROM users WHERE :key = :username ") ;
$select->execute([":key"=> "username", ":username"=> 'aaron' ]) ;
Это не работает, потому что он собирается заменить: ключ на «имя пользователя», а не имя пользователя, поэтому ваш запрос в итоге будет:
SELECT * FROM users WHERE 'username' = 'aaron'
Привязка SQL изначально сделана для замены переменной (вещи, которые меняются), а не константы (имя вашего столбца в этом примере).
Если вы все еще хотите сделать что-то подобное, вам нужно будет что-то кодировать самостоятельно, а не использовать метод -> execute.
Решение
$key = "username" ;
$select = $conn->prepare("SELECT * FROM users WHERE $key = :username ") ;
$select->execute([ ":username"=> 'aaron' ]) ;