Как получить GET переменную с пробелами?

283
10 декабря 2016, 10:37

Есть ссылка <a href="page.php?del=test test">link</a>, в PHP ловлю ее из $_GET["del"] и пытаюсь по содержимому этой переменной удалить из базы поле с текстом test test но поле не удаляется! Из phpMyAdmin вручную этот запрос правильно отрабатывает вот я и пришел к выводу, что в $_GET["del"] хранится текст до первого пробела(естественно такого поля нет и запись не удаляется по этому). Как выйти из подобной ситуации?

Запрос к базе такой: "DELETE FROM services WHERE service=$_GET[del]"

Answer 1

У вас проблема в другом - вы не правильно выполняете запрос на удаление... нужно так:

"DELETE FROM services WHERE service='$_GET[del]'"

Подготавливать сам запрос для вставки в параметр GET (в ссылку), конечно желательно... но если у вас там просто текст без спецсимволов, то не обязательно.

UPDATE

Обязательно перед вставкой переменной в запрос необходимо сделать подготовку этой переменной, например:

$_GET['del'] = addslashes(htmlspecialchars($_GET['del']));

Используйте PDO.

А вообще, удалять данные по "тексту с пробелами" - плохой стиль. Правильно будет - передавать ID удаляемой записи и удалять по ID.

Answer 2

Обычно текст с пробелами и другими недопустимыми в запросах символами кодируется, либо при помощи функции rawurlencode(), которая заменяет пробел на последовательность \%20, либо при помощи функции urlencode(), которая заменяет пробел на плюс. В этом случае можно корректно передать данные через GET-параметр.

$del = rawurlencode('test test');
echo '<a href="page.php?del='.$del.'">link</a>';

Современные браузеры и серверы обычно осуществляют декодирование самостоятельно. Однако, если вам нужно в силу причин декодировать данные самостоятельно, для каждой из указанных выше функций имеется обратная: rawurldecode() и rawdecode(), соответственно.

READ ALSO
как перносить текст без пробелов в таблице

как перносить текст без пробелов в таблице

Таблица находится в блоке div который занимает 87% от всей странице в таблице указано width='100%' если ввести много текста без пробелов в td то таблица...

225
Как сделать такой вывод изображений?

Как сделать такой вывод изображений?

ЗдравствуйтеЕсть несколько изображений, все примерно одинакового размера

205
.tpl шаблоны(PDO)

.tpl шаблоны(PDO)

Делю сайт наtpl шаблоны

196
Проблема с :hover

Проблема с :hover

Не работает трансформация при наведении,подскажите что не так?menu не расширяется при наведении на него

220