查询失败,没有错误

时间:2014-03-29 11:42:01

标签: php mysql mysqli

我有一个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文件中有什么奇怪的东西吗?

感谢您的帮助。

3 个答案:

答案 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。所以你必须使用适当的错误函数,并根据它的正确语法调用它。

此外,您在用户定义的表中存储数据的想法是错误的。您必须首先学习关系数据库基础知识。