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

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

$select = $conn->prepare("SELECT * FROM users WHERE :key =  :username ") ;
$select->execute([":key"=> "username", ":username"=> 'aaron' ]) ;
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
18
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

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

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

Двойные кавычки должны быть одинарными.

sticky bit 25.05.2018 01:39

Решение

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

Другие вопросы по теме