Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Запрос в базу данных. Как правильно сделать?

☀︎Питруха☀︎ Мастер (1801), на голосовании 3 месяца назад
Делаю следующий запрос в базу данных, но данные на возвращаются.
  $dta = "SELECT * FROM shiny_name  WHERE 'Ширина' = '".$data['Ширина']."' AND 'Профиль' = '".$data['Профиль']."' "; 
Должны выдаваться все строчки у которых Ширина и Профиль соответствуют значениям переменных. что я не так делаю? в ответе пусто. Значения переменных похоже считываются правильно. Без where и последующего кода все работает. А с ним никак.
Голосование за лучший ответ
3681 Просветленный (20681) 4 месяца назад
Основная проблема в запросе заключается в использовании одинарных кавычек вокруг названий столбцов. В SQL одинарные кавычки используются для строковых литералов, а не для названий столбцов. Когда ты заключаешь «Ширина» и «Профиль» в одинарные кавычки, база данных воспринимает их как строковые литералы, а не как названия столбцов.
 $dta = "SELECT * FROM shiny_name WHERE Ширина = '".$data['Ширина']."' AND Профиль = '".$data['Профиль']."'"; 
☀︎Питруха☀︎Мастер (1801) 4 месяца назад
Все заработало! спасибо!
Лайт Ягами Искусственный Интеллект (307019) 4 месяца назад
Правильно - через подготовленные выражения. Как-то типа того, но в зависимости обёртки для подключения к БД код может отличаться:
 $query = "SELECT * FROM shiny_name WHERE Ширина = ? AND Профиль = ?";
$stmt = $db->prepare($query);
$result = $stmt->execute([$data['Ширина'], $data['Профиль']]);
Если напрямую пихать данные в строку запроса, то это может привести к атакам типа SQL-инъекция.
Unknown Unknown Гуру (4899) 4 месяца назад
Если ты изучаешь SQL, то PHP тут с какого боку ?
Никто с помощью синтаксиса SQL не пишет запросы, ибо это небезопасно и неудобно.
Для таких вещей в Laravel есть Eloquent ORM и Query Builder
☀︎Питруха☀︎Мастер (1801) 4 месяца назад
ну канешно
Похожие вопросы