#php #mysql #get
#php #mysql #получить
Вопрос:
У меня есть сохраненный URL-адрес в базе данных MySQL. ( http://example.com/page.php?ex='$_GET[ex]'
) Когда я извлекаю его для создания динамической ссылки, он выдает мне http://example.com/page.php?ex='.$_GET[ex].'
и, конечно, не будет работать.
Кажется, я не могу получить (извините, пришлось использовать это!) $_GET
переменную.
Если быть точным, ячейка содержит…
Submit Risk Assessment<button><a href="risksearch.php?ex='.$_GET[ex].'">Create / Edit</a></button>
Комментарии:
1. Не храните буквальный исходный код PHP в базе данных! Сохраняйте текст с заполнителями, которые затем интерполируйте. Самый простой пример
sprintf
.2. хммм … sprintf не совсем то, что мне было нужно… Я думаю, что это было бы полезно, если бы ссылка была сохранена сама по себе и восстановлена. Это было трудно объяснить… У меня в основном есть список задач, но только некоторые элементы будут иметь ссылки на другие формы. Я пытался сохранить это как текст и ссылки в базе данных. Отлично работает без переменной $ _GET. Это то, что можно сделать.
3. Возможно, мне придется добавить еще одно поле в БД и вызвать его отдельно с помощью sprintf. Позор, поскольку есть только 3 из 70 задач.
Ответ №1:
Кажется, что строка была закодирована urlencode
Вы должны расшифровать строку в кодировке url
$a = urldecode('http://example.com/page.php?ex='.$_GET[ex].'');
echo $a;
// print the url
Комментарии:
1. Спасибо, Филипп Т. У меня есть другой текст в том же поле, который, вероятно (по соображениям дизайна), разделил его на его собственное поле, что я и сделал, и использовал предложение deceze о sprint.
Ответ №2:
На самом деле это не ответ на вопрос, но мое решение состояло в том, чтобы создать отдельное поле в базе данных только для URL-адреса. Затем я использовал предложение deceze о sprintf, и оно отлично работает.
if(!empty($row[buttonlink])){
$ex = $_GET[ex];
$rawlink = $row[buttonlink];
$format = '<button><a href="%s?ex=%s">Create / Edit</a></button>';
$buttonlink = sprintf($format, $rawlink, $ex);
}
Нужно было сделать только небольшое количество кнопок, и все они могли быть помечены как «Создать / отредактировать». Я мог бы добавить еще одно поле, чтобы метка также вызывалась в sprintf.