Question

I am using html5 local storage and I am trying to read it and pass it to a php variable:

This is the code:

$myphpvar = "<script>document.write(localStorage.getItem('myjsvar'));</script>"; 

When I do this:

echo $myphpvar;

The value looks right (at leave visually)

Upto there all looks good BUT when I add this code:

$sql="INSERT INTO `pending` (`id`, `myfield`) VALUES ('', '$myphpvar')";

I then get this error:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ..

The error points here:

$myphpvar = "<script>document.write(localStorage.getItem('myjsvar'));</script>";

Any ideas why?

Était-ce utile?

La solution

Updated :

This doesn't Work because :

$myphpvar = "<script>document.write(localStorage.getItem('myjsvar'));</script>"; 

Now your PHP $myphpvar variable contains :

  <script>document.write(localStorage.getItem('myjsvar'));</script>

when you echo then this is like :

echo "<script>document.write(localStorage.getItem('myjsvar'));</script>"

so this will show your Js variable,because it runs on your browser.

but when you do this in SQL : it look something like below :

$sql="INSERT INTO `pending` (`id`, `myfield`) VALUES ('', '<script>document.write(localStorage.getItem('myjsvar'));</script>')";

For Achieving this, you have to pass your localStorage value to URL,and get it on PHP or use AJAX to post!

window.location.href = window.location.href+"?local="+localStorage.getItem('myjsvar'));

Autres conseils

You shouldn't do that because Php work on server side wherease the html5 works on client side. You certainly should certainly use js with ajax.

php is a back-end programming language. it communicates with your server and compiles code. localstorage is a front end object which is working on the users browser. You can not get that value as a php variable.

but a clue, you can put it on a form as a hidden input, and simulate form post. on submit of the post, you can send that value as form data, or a query string. so you can get it from there.

for your way, it is impossible.

I think something might be wrong in your SQL query.

Try changing it to:

$sql="INSERT INTO `pending` (`id`, `myfield`) VALUES ('', '{$myphpvar}')";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top