2014-03-24 41 views
4

我使用HTML5本地存儲空間,我想讀它,並把它傳遞給一個PHP變量:傳遞HTML5本地存儲值到PHP錯誤

這是代碼:

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

當我做到這一點:

echo $myphpvar; 

值期待權(在休假視覺)

高達那裏所有看起來不錯BU T當我添加以下代碼:

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

然後我得到這個錯誤:

錯誤:您有一個錯誤的SQL語法;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊..

錯誤點這裏:

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

任何想法,爲什麼?

+1

有一個區別...當我回顯變量,我可以看到它在PHP中,所以它已通過。 – Satch3000

+0

不,當你回顯你正在迴應JS的變量時。 **當它到達瀏覽器**時,JS運行並更改文檔,以便您可以看到變量的內容。 – Quentin

+0

這個問題似乎是無關緊要的,因爲它反映了對PHP和JavaScript之間關係的深刻誤解。 – 2014-03-24 16:59:29

回答

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

我認爲你的SQL查詢中可能有錯誤。

嘗試將其更改爲:

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

同樣的錯誤仍然是:o/ – Satch3000

+0

@ Satch3000我認爲問題可能是語法。您正嘗試將HTML5 localtorage字符串放入SQL查詢中。可能有一些字符會破壞SQL查詢。最好的辦法是在屏幕上顯示本地存儲結果,然後手動輸入帶有localstorage字符串的SQL查詢到數據庫的SQL行中。這樣你可以看到SQL是否沒有被實現的字符串破壞。 – Parrotmaster

0

你不應該這樣做,因爲在服務器端的PHP工作wherease HTML5的工作在客戶端。 你當然應該使用js和ajax。

0

php是一種後端編程語言。它與您的服務器通信並編譯代碼。 localstorage是一個在用戶瀏覽器上工作的前端對象。您無法將該值作爲php變量獲取。

但是一個線索,你可以把它放在一個窗體上作爲一個隱藏的輸入,並且模擬窗體post。在提交帖子後,您可以將該值作爲表單數據或查詢字符串發送。所以你可以從那裏得到它。

你的方式,這是不可能的。