我正在嘗試使用PHP/MySQL創建一些頁面。是mysqli bind_param的罪魁禍首?無法保存特殊字符,例如€
我的數據庫表設置爲utf8_general_ci
,表列也是如此。如果我使用phpmyadmin並手動插入一個頁面,我可以鍵入所有€我想要的,他們將被插入爲€。我也可以完美地展示這一點。
然而,當我試圖插入使用的mysqli的€網頁將被轉換爲â,¬
我沒有做任何形式的轉換。如果我在即將插入頁面之前回顯頁面列fiels,它仍會正確顯示€。
代碼:
$connection = new mysqli('localhost', 'root', '', 'some_db');
$query = 'INSERT INTO page (ID, title, content) VALUES (?, ?, ?)';
$params = array('iss', 'NULL', 'test title', '€ some content');
$stmt = $connection->prepare($query);
call_user_func_array(array($stmt, 'bind_param'), by_ref($params));
$stmt->execute();
的by_ref
功能只能使一個參考,沒有別的。所有的工作都很好,只是當它沒有正確插入時,它讓我頭疼。也許它不是bind_param,而是別的。我想知道答案!
更新:
由於數字精確我想通了,我必須確保連接打算用「UTF8」。不過,我只需要在使用INSERT或UPDATE時進行設置,因爲SELECT確實給我返回了utf8的結果。希望這可以幫助別人
並不能幫助我,當我插入,但使選擇額外的怪異(即â,¬再次轉換到頁*) – Tessmore
@Tessmore:嘗試'$ connection-> get_charset()'並查看當前值是什麼。 –
@Tessmore:還有其他一些事情要嘗試;嘗試不使用綁定的查詢,並嘗試綁定在call_user_func_array之外。 –