использование именованных параметров для переменных в SQL - PullRequest
0 голосов
/ 25 мая 2018

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

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

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Раствор

$key = "username" ; 
$select = $conn->prepare("SELECT * FROM users WHERE $key =  :username ") ;
$select->execute([ ":username"=> 'aaron' ]) ;
0 голосов
/ 25 мая 2018

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

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

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

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

...