[英]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.