Почему не выполняется запрос если в переменной есть точка?
1) $id_kar = 150;
mysql_query("DELETE FROM nametable WHERE id = ".$id_kar."",$link);
2)$ url_kar = '20160418123044766.png';
mysql_query("DELETE FROM nametable WHERE url = ".$url_kar."",$link);
Первый запрос с удалением по id выполняется успешно, а второй с удалением по url нет.
В чем может быть причина?
У меня есть догадки по поводу того, что я неправильно передаю значение переменной с точкой.
Так как при прямой подстановке значения запрос выполняется.
Точка - это специальный символ в SQL. Их нужно экранировать, оборачивая токен в специальные символы. В mysql для этого используется backtick: `. Но экранировать нужно названия и алиасы колонок и таблиц.
В вашем конкретном случае не хватает банальных кавычек вокруг строки со значением: DELETE FROM nametable WHERE url = "foo.bar.baz"
Первый запрос работает без кавычек потому, что id - это integer, их оборачивать необязательно.
Так как мне построить этот запрос чтобы он работал?
Вот так?
$ url_kar = '20160418123044766.png';
mysql_query("DELETE FROM nametable WHERE url = '".$url_kar."'",$link);