2013-05-01 20 views
1

我使用PHP和庫MySQLi和我會見一個INSERT查詢它看起來像一個問題:mysqli的PHP查詢犯規插入字符「+」

SET NAMES 'utf8' 
    $text = mysqli_real_escape_string($connection, $text) 
    insert into table values('', '".$text."'); 

網頁編碼UTF8無BOM和MySQL是UTF8一般ci

問題是當我使用phpmyadmin請求工作正常,但是當我使用網站界面並輸入帶有字符「+」的文本時,它在mysql中替換爲空格「」,但所有其他字符都像',',口音,\,/,%正確插入... 它的工作之前,我可能犯了一個錯誤。

非常感謝您提前致歉,併爲我可憐的英語感到抱歉。

+1

您是否嘗試使用預處理語句綁定參數? – Kermit 2013-05-01 02:04:34

+0

你好我不擅長準備查詢,我知道我將不得不使用它們,但我不明白這裏的問題,它讓我瘋狂:) – toolook 2013-05-01 02:08:09

+0

所以!我已經嘗試了準備好的查詢,並且我添加的文本仍然沒有「+」...哦絕望... – toolook 2013-05-01 02:55:00

回答

0

這既不是MySQL的,不是mysqli的,而不是PHP。 沒有一個人在這個角色中有任何特殊的含義。

如果你關心,以驗證您的插入,通過簡單地附和$text出插之前,你會看到,它已經剝離+符號。所以,你必須找到將該符號去掉的代碼。

的程序是不是一個「黑匣子」,你有數據反饋,並將其返回一些意想不到的輸出。
反倒是一套運營商,分別執行一些數據操作。

所以,你必須調試你的代碼,意味着你必須附和你的$文本變量出來在你的代碼的各個部分,看看它得到改變。最有可能的是得到一些不必要的治療。找到該代碼後,您可以將其刪除或在此處詢問是否可以。

如果您在瀏覽器的地址欄中輸入文字,則自動替換+字符的唯一可能情況是。在這種情況下,+可以自動替換爲空格,因爲PHP解碼urlencoded文本,而+用於替換URL中的空格字符。

+0

感謝您的回答!我是新來的編碼,看來你給我展示的方式,因爲這個添加是發送到PHP文件的Ajax,所以我在它上面,會回來的消息。再次感謝。 – toolook 2013-05-01 05:00:31

+0

那麼你是正確的,因爲AJAX不好用「是encodeURI」的功能,其實是需要「encodeURIComponent方法」時,發送不像URL已經存在,並通過你需要顯示像由用戶撰寫的評論或文本字符組成的值。非常感謝您向我展示道路併爲浪費您的時間而道歉。 – toolook 2013-05-01 05:26:48

+0

我錯了標籤,如果一個版主可以改變他們到字符編碼和JavaScript它將是偉大的網站和社區感謝偉大。 – toolook 2013-05-01 05:35:04