我有一个UTF8编码的数据库,因为它包含阿拉伯字母。我有一个php文件来选择给定表中的所有值:
<?php header('Content-type: application/json; charset=utf-8');
$host = "localhost"; //Your database host server
$db = "kalimat"; //Your database name
$user = "root"; //Your database user
$pass = ""; //Your password
$connection = mysqli_connect($host, $user, $pass);
//Check to see if we can connect to the server
if(!$connection)
{
die("Database server connection failed.");
die(mysqli_error($db));
}
else
{
//Attempt to select the database
$dbconnect = mysqli_select_db($connection, $db);
//Check to see if we could select the database
if(!$dbconnect)
{
die("Unable to connect to the specified database!");
}
else
{
$auteur=utf8_decode(urldecode($_GET["artist"]));
//$auteur=utf8_decode($auteur);
$resultset = mysqli_query($connection,"SELECT * FROM $auteur");
if( $resultset )
{
$records = array();
//Loop through all our records and add them to our array
while($r = mysqli_fetch_assoc($resultset))
{
$records[] = $r;
}
$records = array_map(function($r) {
$r['artist'] = utf8_encode($r['artist']);
return $r;
}, $records);
//Output the data as JSON
echo json_encode($records);
}
else{
die("Error:".mysqli_error()); //Here is the error
}
}
}
?>
在输出中,我有&#34; Error:
&#34;没有任何规范,所以我不能知道问题的根源。
php文件中有什么奇怪的东西吗?
感谢您的帮助。
答案 0 :(得分:0)
你试过utf8mb4吗?
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
utf8mb4是utf8的超集
建议:数据库,表名和列应以非utf8字符表示。
编辑:
使用utf8来处理utf8字符,例如:
您的文件,将它们转换为utf8,您使用utf8的所有页面,以及您提交作者的页面。
数据库,表格,列。
您编辑代码的编辑器。
标题
...
答案 1 :(得分:-1)
尝试在php标记启动后插入以下行,并显示错误。
error_reporting(E_ERROR);
ini_set("display_errors",1);
希望这会有所帮助。
答案 2 :(得分:-2)
您使用的是 mysqli ,而不是mysql。所以你必须使用适当的错误函数,并根据它的正确语法调用它。
此外,您在用户定义的表中存储数据的想法是错误的。您必须首先学习关系数据库基础知识。