беру из переменной адрес ссылки в виде: Код (Text): /forum/viewtopic.php?f=18&t=435&p=1468#p1468 а при записи в БД в ячейке получается Код (Text): /forum/viewtopic.php?f=18&t=435&p=1468#p1468 ... При записи в БД Через phpmyadmin, раскодирование амперсанда не происходит.... в чем проблема перевода его в код?
Код (Text): UPDATE `fail_docs` SET `notification_scan`='1', `notification_link`='../forum/viewtopic.php?f=18&t=438&p=1474#p1474' WHERE `id`='250'; в эту функцию отправляю. Код (Text): function write_general($request, $link = NULL, $time_reload=2, $message = NULL) { echo $request; include('bd2.php'); mysqli_query($db2, $request) or die ("Ошибка записи в БД SQL".mysqli_error());; if (!isset($message) OR empty($message)) { echo "<br>Обновление данных прошло успешно"; } else { echo $message; } if (isset($link) AND !empty($link)) {reload($time_reload, $link);} return TRUE; }
@Valick, а эта функция разве экранирует амперсанты ? просто читаю доку и: PHP: Экранируемые символы NUL (ASCII 0), \n, \r, \, ', ", и Control-Z.
@MouseZver, должна экранировать, иначе моя жизнь никогда не будет прежней. P.S. я только 15 минут назад домой пришёл, нет сил проверять. --- Добавлено --- @MouseZver, кстати да, может и не должна, может при выводе строка ломается и MySQL тут ни при чём.
PHP: <?php declare ( strict_types = 1 ); error_reporting ( E_ALL ); $c = new mysqli('','root','','git'); $c -> set_charset( 'utf8' ); $a = $c -> real_escape_string( "' 111 && 22 ---" ); $c -> query( "INSERT INTO test_77382 (message) VALUES ('{$a}')"); (С)
@Valick, ты попутал HTML-кодирование с экранированием для БД --- Добавлено --- @Payalnik610, браузеры по идее должны понимать HTML-сущности в ссылках.
в браузер без искажения: Код (Text): UPDATE `fail_docs` SET `notification_scan`='1', `notification_link`='../forum/viewtopic.php?f=18&t=438&p=1474#p1474' WHERE `id`='250'; Мне нужно по этой ссылке на форум без отображения на странице в текущем моменте, а ввиду кодированого символа не понимает куда. По науке амперсанд не экранируется как я понимаю, а тут засада. пробовал несколько вариантов с функциями экранирования и все одинаково. Ощущение?что в кодировке ломает, соединение utf8, скрипт тоже, а вот на сервере UTF8 Unicode_ci
Вообщем если выводить ссылку из БД, в принципе вопросов нет, все исправно, если загонять в переменную данные из ячейки, то просо обработать. Чисто теперь душе не понятно зачем, амперсанд в код перегоняет.
То, что ты показал, к экранированию для БД отношения не имеет. Это может делать даже редактор на клиенте, заранее подготавливая данные к будущему выводу. Попробуй переключиться в редакторе в режим ввода HTML-кода, если такая возможность есть, после чего уже вводи.