Использование именованных параметров для переменных в SQL

мой код не работает, я делаю что-то не так, возможно ли использовать именованные параметры для ключа. Я пытаюсь сделать это, где я могу присвоить значение переменной части в моем sql «где username = aaron» без жесткого кодирования, если нет, как это можно сделать, пожалуйста

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

1

Решение

Это не работает, потому что он собирается заменить: ключ на «имя пользователя», а не имя пользователя, поэтому ваш запрос в итоге будет:

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

Привязка SQL изначально сделана для замены переменной (вещи, которые меняются), а не константы (имя вашего столбца в этом примере).

Если вы все еще хотите сделать что-то подобное, вам нужно будет что-то кодировать самостоятельно, а не использовать метод -> execute.

1

Другие решения

Решение

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

По вопросам рекламы [email protected]