Я использую локальное хранилище html5, и я пытаюсь прочитать его и передать его переменной php:
Это код:
$myphpvar = "<script>document.write(localStorage.getItem('myjsvar'));</script>";
Когда я это делаю:
echo $myphpvar;
Значение выглядит правильно (визуально)
Upto там все выглядит хорошо НО, когда я добавляю этот код:
$sql="INSERT INTO `pending` (`id`, `myfield`) VALUES ('', '$myphpvar')";
Затем я получаю эту ошибку:
Ошибка: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, который будет использоваться рядом.
Ошибка здесь:
$myphpvar = "<script>document.write(localStorage.getItem('myjsvar'));</script>";
Любые идеи почему?
Обновлено:
Это не работает, потому что:
$myphpvar = "<script>document.write(localStorage.getItem('myjsvar'));</script>";
Теперь ваша переменная PHP $myphpvar
содержит:
<script>document.write(localStorage.getItem('myjsvar'));</script>
когда вы echo
это выглядит так:
echo "<script>document.write(localStorage.getItem('myjsvar'));</script>"
так что это покажет вашу переменную Js, потому что она работает в вашем браузере.
но когда вы делаете это в SQL: это выглядит примерно так:
$sql="INSERT INTO `pending` (`id`, `myfield`) VALUES ('', '<script>document.write(localStorage.getItem('myjsvar'));</script>')";
Для достижения этого вам нужно передать значение localStorage
в URL
и получить его на PHP
или использовать AJAX
для публикации!
window.location.href = window.location.href+"?local="+localStorage.getItem('myjsvar'));
Вы не должны этого делать, потому что Php работает на стороне сервера, где html5 работает на стороне клиента. Вы наверняка должны использовать js с ajax.
php – это базовый язык программирования. он связывается с вашим сервером и компилирует код. localstorage – это объект переднего конца, который работает в браузере пользователей. Вы не можете получить это значение как переменную php.
но ключ, вы можете поместить его в форму как скрытый ввод и смоделировать сообщение формы. при отправке сообщения вы можете отправить это значение в виде данных формы или строки запроса. так что вы можете получить его оттуда.
для вашего пути это невозможно.
Я думаю, что что-то может быть неправильным в вашем SQL-запросе.
Попробуйте изменить его на:
$sql="INSERT INTO `pending` (`id`, `myfield`) VALUES ('', '{$myphpvar}')";