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






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