簡體   English   中英

PHP正在向MySQL插入問號

[英]PHP is inserting question marks to MySQL

我試圖像這樣向MySQL數據庫插入一行:

function insertUserRating($username, $eventid, $ratingval, $ratingtext) {
        mysqli_query($this -> db -> connect(), "SET NAMES 'utf8';");
        $datetime = date("Y-m-d H:i:s");
        $query = mysqli_query($this -> db -> connect(), "   INSERT INTO  `rating` ( `id_user` ,`id_event` ,`rating_value` ,`rating_text` ,`rating_date`) 
            VALUES ((SELECT id_user FROM user WHERE username=  '$username' ),  '$eventid',  '$ratingval',  '$ratingtext',  '$datetime' )");
        if ($query) {
            return true;
        } else {
            return false;
        }
    }

連接功能是這樣的:

public function connect() {
        require_once 'config.php';
        $con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
        $con -> set_charset("utf8");
        if (mysqli_connect_errno()) {
         throw new Exception(mysqli_connect_error(), mysqli_connect_errno());}
        return $con;
    }

但是,如果我嘗試使用$ratingtext插入具有某些Unicode字符的行,例如:Lepšišie我只會在表中得到Lepieie 表具有utf8_slovak_ci編碼。

mysql中的php模塊無法根據配置自動將自身設置為utf8。 大概沒人知道,為什么。 解決方法是

SET NAMES 'utf8';

在每個mysql連接開始時查詢。

我在您的問題中看到,您已經在解決此錯誤。 不,設置后不需要utf8_encode和此類技巧。

其他東西( $something->connect類)將不起作用,它們全部基於php的mysql模塊,這是apache的模塊。 這是一個老錯誤,可能永遠不會修復。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM