Сохранение и извлечение инструкции $ _GET из MySQL

#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.