У меня есть код: prepare("SELECT `Calvin` FROM `users` WHERE `login` = ? "); он работает,значение поля `Calvin`(в базе данных значение этого поля число 12) выводится.
вопрос: как вставить переменную заместо этого `Calvin`?(Допустим переменную $a = 'Calvin' ).
я пишу вот так: prepare("SELECT {$a} FROM `users` WHERE `login` = ? "); но в таком случае у меня не выводится содержимое этого поля(выводится просто 0), в отличие от кода, который я привел в начале.
этот код тоже выводит просто 0 :
prepare("SELECT ? FROM `users` WHERE `login` = ? ")
execute(array($_POST['Calvin'],$_SESSION['user']));
PHP
PHP&SQL как вставить переменную в запрос sql;
> Допустим переменную $a = 'Calvin'
строго говоря, лучше $a = '`Calvin`', но вроде бы и без кавычек должно пройти, хз зачем их всегда пишут
> prepare("SELECT { $a } FROM `users` WHERE `login` = ? ");
string interpolation не работает, когда есть пробелы внутри скобок
надо SELECT {$a} FROM ...
(блин, майлру их сам доставляет, ну в общем после { и перед })
> execute(array($_POST['Calvin'],$_SESSION['user']));
у тебя $_POST['Calvin'] == 'Calvin'? в общем-то он просто строку подставит вместо имени поля, поэтому у тебя в выводе будет строка "Calvin", мб 0 уже при попытке распарсить число получается или типа того, хз как это в пыхе работает
ну и вообще если тебе так приходится делать, то есть подозрения, что ты неправильно спроектировал свою БД
строго говоря, лучше $a = '`Calvin`', но вроде бы и без кавычек должно пройти, хз зачем их всегда пишут
> prepare("SELECT { $a } FROM `users` WHERE `login` = ? ");
string interpolation не работает, когда есть пробелы внутри скобок
надо SELECT {$a} FROM ...
(блин, майлру их сам доставляет, ну в общем после { и перед })
> execute(array($_POST['Calvin'],$_SESSION['user']));
у тебя $_POST['Calvin'] == 'Calvin'? в общем-то он просто строку подставит вместо имени поля, поэтому у тебя в выводе будет строка "Calvin", мб 0 уже при попытке распарсить число получается или типа того, хз как это в пыхе работает
ну и вообще если тебе так приходится делать, то есть подозрения, что ты неправильно спроектировал свою БД
у тебя первый "вопрос", т. е. placeholder в твоём запросе заменяется первым элементом массива. Ты уверен, что $_POST['Calvin'] содержит название столбца в таблице в БД?
Смотри, запрос у тебя составлен так:
SELECT? FROM `users`
т. е. вместо "?" - должно быть название столбца. Например, "name", да?
т. е. весь запрос должен примерно выглядеть как:
"Select name FROM `users` WHERE `login` = ? "
так вот, я почему-то уверен, что массив, который ты скармливаешь функции Execute в первом своём элементе содержит нифига не название колонки в таблице..
Смотри, запрос у тебя составлен так:
SELECT? FROM `users`
т. е. вместо "?" - должно быть название столбца. Например, "name", да?
т. е. весь запрос должен примерно выглядеть как:
"Select name FROM `users` WHERE `login` = ? "
так вот, я почему-то уверен, что массив, который ты скармливаешь функции Execute в первом своём элементе содержит нифига не название колонки в таблице..
Похожие вопросы
- Два SQL запроса одновременно | PHP
- Не могу передать переменную в php
- PHP MYSQL после ввода запроса , отображается пустая строка перед 1 кой, немогу понять Помогите пожалуйста
- Несколько AJAX запросов на один PHP файл.
- PHP не видит данных POST запроса
- Как выполнить запрос в бд на php ооп
- Как в PHP указать тип переменной unsigned int?
- Php + Sql. Если значение массива == 'значение' , делать действие с предыдущими элементами
- Нужна помощь c запросами и базой данных, PHP, MySQL
- Ajax. Как передать переменную в php?
> у тебя $_POST['Calvin'] == 'Calvin'? в общем-то он просто строку подставит вместо имени поля, поэтому у тебя в выводе будет строка "Calvin", мб 0 уже при попытке распарсить число
да, там просто Calvin выводится я ошибся немного.
а вот почему он просто строку вместо имени подставит это конечно интересно, этого я не понимаю, ни в одной книге из тех, которые я читал про это не говорилось.