我正在使用html5本地存储,我正在尝试阅读它并将其传递给php变量:
这是代码:
$myphpvar = "<script>document.write(localStorage.getItem('myjsvar'));</script>";
当我这样做时:
echo $myphpvar;
该值看起来正确(在视觉上离开)
当我添加此代码时,所有内容都很好看:
$sql="INSERT INTO `pending` (`id`, `myfield`) VALUES ('', '$myphpvar')";
然后我收到此错误:
错误:您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在...附近使用正确的语法。
错误点在这里:
$myphpvar = "<script>document.write(localStorage.getItem('myjsvar'));</script>";
任何想法为什么?
答案 0 :(得分:9)
已更新:
这不起作用,因为:
$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'));
答案 1 :(得分:0)
你不应该这样做,因为Php在服务器端工作,而html5在客户端工作。 你当然应该使用带有ajax的js。
答案 2 :(得分:0)
php是一种后端编程语言。它与您的服务器通信并编译代码。 localstorage是一个正在处理用户浏览器的前端对象。你不能把这个值当作php变量。
但是一个线索,您可以将其作为隐藏输入放在表单上,并模拟表单帖子。在提交帖子时,您可以将该值作为表单数据或查询字符串发送。所以你可以从那里得到它。
按你的方式,这是不可能的。
答案 3 :(得分:-1)
我认为你的SQL查询可能有问题。
尝试将其更改为:
$sql="INSERT INTO `pending` (`id`, `myfield`) VALUES ('', '{$myphpvar}')";