Ошибка в MySQL и PHP

С MySQL знаком очень слабо.

Есть вот такая строка:

$q = mysql_query("SELECT * FROM news WHERE link = ".$_GET['name']);


Как я понимаю, должно быть "выбрать все из news, где link = %get-запрос%".

Ошибка MySQL - Unknown column 'helloworld' in 'where clause'

Таблица такая: (вдруг поможет)
4021927.png
Что я делаю не так?
  • Вопрос задан
  • 2811 просмотров
Решения вопроса 2
@Slko
C++/C#/Python Developer
Данный код - идеальный пример, в котором можно эксплуатировать SQL-инъекцию. Используйте параметризированные запросы или экранируйте входные данные.
А если отвечать конкретно на этот вопрос, то в GET['name'], я полагаю, передаётся helloworld без кавычек и выходит такой SQL-запрос:
SELECT * FROM news WHERE link = helloworld
Соответственно, надо добавлять кавычки вокруг "helloworld", потому что без кавычек это интерпретируется как идентификатор столбца, а не как строка.
Ответ написан
Комментировать
$q = mysql_query("SELECT * FROM news WHERE link = '{$_GET['name']}'");

//LIKE
$q = mysql_query("SELECT * FROM news WHERE link LIKE '%{$_GET['name']}%'");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
deadbyelpy
@deadbyelpy
веб-шмеб
Простите, крик души. Охх, хватит быдлокодить, mysql_* функции уже давно в deprecated. Используйте mysqli, или PDO.
И почему все еще можно делать запросы, параметрами которых $_GET или $_POST, подумайте о будущем. И даже если это мелкое задание, привычка экранировать все вредоносные символы всегда пригодится.

А по сути. что передается в параметре? Ответ выше, верный. Вы передаете "helloworld" который воспринимается как значение столбца.
Ответ написан
Комментировать
Abdukhafiz
@Abdukhafiz
if(isset($_GET['name'])) {$name = htmlspecialchars(mysql_real_escape_string($_GET['name']));}

$q = mysql_query("SELECT * FROM news WHERE link = '".$name."';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы