2012-04-20 69 views
1

我有這樣的SQL:的mysql_query不能插入一行正確

INSERT INTO v3_peers 
        (torrent, peer_id, ip, ipv6, port, smoke_ip, uploaded, downloaded, up_ofset, down_ofset, remaining, started, last_action, connectable, userid, agent) 
        VALUES 
        ('13471', '-UT2200-ĂZŤjśŻl‰şđ^', '69.64.147.243', '2001:0:5ef5:79fd:14e6:7214:2a5f:5811', '58262', '', '0', '0', '0', '0', '0', '1334945327', '1334945327', 'yes', '1', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19') 

當它在腳本執行它保存到數據庫,但的peer_id只是「-UT2200-」和瀏覽器給我對話框保存文件, sript和內容的名稱應該以普通/文本的形式返回爲php輸出

當我通過phpmyadmin將此插入到db時,一切正常。

的peer_id有數據類型爲varchar(255)

任何想法有什麼不好?

+1

哪個編碼是你的PHP文件? – Dion 2012-04-20 18:19:44

+0

在嘗試將它們提交到數據庫之前是否正確地轉義了您的值? – 2012-04-20 18:20:22

+0

PHP文件位於utf-8。 我試圖用mysql_real_escape_string轉義它 - 沒有改變 – Koga 2012-04-20 18:22:01

回答

-1

好吧,我發現了錯誤。當我比較從$的DB和實際的數據插入DATAS的peer_id = $ _ GET [的peer_id]變量像SQL:

WHERE peer_id LIKE '".$peer_id."' 

然後我得到了錯誤的原因的peer_id以dB爲單位是不喜歡的peer_id,但是當我使用

WHERE peer_id = '".$peer_id."' 

它完美的工作。列peer_id的編碼必須設置爲utf8-unicode-ci NOT utf8-general-ci !!

因此,沒有編碼錯誤(phpmyadmin中缺少字符,因爲我寫的問題不是真的丟失,但因編碼而隱藏),但錯誤在其他腳本中。

謝謝你們所有的時間。 我希望這將有助於未來的人。

0

我beleave的MySQL是不允許的特殊字符

+0

部分正確。問題是字符的編碼。如果使用正確,MySQL將允許它。 – 2012-04-20 18:21:56

+1

當然,MySQL可以處理這些字符。 – Dion 2012-04-20 18:22:17

+0

我發現一個字符沒有複製到我的第一篇文章。它在字符「ş」和「đ」之間,在保存的日誌文件中顯示爲方形。但是在十六進制格式中它是十六進制表示「01」的點。可以通過這個錯誤? – Koga 2012-04-20 18:30:03

0

也許與utf8_decode()

+0

不起作用,它會保存所有字符,但其中一些字符會更改爲「?」。 無法治癒。 – Koga 2012-04-20 18:35:20

+0

和utf8_encode()? – Dion 2012-04-20 18:38:23

+0

結果相同,但其他字符已更改。 – Koga 2012-04-20 18:40:22

1

試試你應該通過變量到查詢以安全的方式。重做您的腳本並進行查詢,以便通過變量傳遞。 E.g:

$peer_id = mysql_real_escape_string('-UT2200-ĂZŤjśŻl‰şđ^'); 
$query = 'INSERT INTO `v3_peers` (`peer_id`) VALUES ("' . $peer_id . '")'; 
$result = mysql_query($query); 

這樣,您確保該變量不影響查詢結構。

此外,作爲@tereško提到,嘗試PDO。您的查詢看起來像經常使用,因此PDO及其準備好的語句可能派上用場。我最近向某人解釋說:PDO prepared statements to store html content

+0

我試試這個 - 沒有結果。 – Koga 2012-04-20 18:41:54

+0

我在查詢中犯了一個錯誤 - 忘記引用字符串。 – bostaf 2012-04-20 18:44:59

+0

@Koga我只是用我的腳本'utf-8'解碼和表格'utf8 - utf8_unicode_ci'整理來測試它。完美工作。你提到你的腳本是'utf-8' - 這是否適用於機器人腳本編碼和頁面標題? – bostaf 2012-04-20 18:50:26