查询MySQL数据库时支持PHP和阿拉伯语

查询MySQL数据库时支持PHP和阿拉伯语,php,mysql,unicode,arabic,Php,Mysql,Unicode,Arabic,我有一个mysql数据库,在其中存储阿拉伯语,它在保存阿拉伯语字符和检索内容两方面都很好,我收到的问题是当我从数据库检索此阿拉伯语内容并希望在另一个查询中使用时,它不起作用: //Database Connection mysql_query("SET CHARACTER SET utf8"); $sql = mysql_query("SELECT * FROM `categories` WHERE 1"); while($row1 = mysql_fet

我有一个mysql数据库,在其中存储阿拉伯语,它在保存阿拉伯语字符和检索内容两方面都很好,我收到的问题是当我从数据库检索此阿拉伯语内容并希望在另一个查询中使用时,它不起作用:

    //Database Connection
     mysql_query("SET CHARACTER SET utf8");
     $sql = mysql_query("SELECT * FROM `categories` WHERE 1");

     while($row1 = mysql_fetch_array($sql))
     {
        $category =  $row1['label_id']; //Arabic Content is retrieved displayed correctly
        $query1 = mysql_query("SELECT * FROM `user_list` WHERE `Category` = '" .$category . "' ORDER BY `private_number` DESC");
        $query1 = mysql_query("SET CHARACTER SET utf8");
        while($row = mysql_fetch_array($query1))
        {
           //returns zero rows
        }
     }
但是当我复制上面的字符串echo和查询而不连接时,它确实工作得很好 例如:

我的php代码有什么问题,我可以做些什么来改变它

确保数据库和表排序规则都设置为utf8\u general\u ci。如果不是,请在备份数据库后使用工具转换排序规则

文件的编码也应该是UTF-8

此外,检查元标记内容类型是否设置为utf-8: 对于HTML5,或 对于XHTML


在数据库中,它正确地保存了unicode字符,而不是它们的html等价的可能的副本-虽然不是golden hammer投票将其关闭。当$query1变量的此定义覆盖前一个变量时,上面的不是重复运行“SET CHARACTER SET…”吗?也许你想用$query1.=?我认为字符集查询也应该在SELECT查询之前进行。如果您只是在学习PHP,请不要学习过时的mysql\u查询接口。这很糟糕,在未来的PHP版本中会被删除。一个现代的替代品。像这样的指南可以帮助解释最佳实践。始终绝对确保您的用户参数是正确的,否则您将面临严重的问题。
$query1 = mysql_query("SELECT * FROM `user_list` WHERE `Category` = 'الأفراد' ORDER BY   `private_number` DESC");