Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql回归?_Php_Mysql - Fatal编程技术网

Php mysql回归?

Php mysql回归?,php,mysql,Php,Mysql,我有一个问题,当我试着回显西里尔文字时,它会返回像 这是密码 <? include('db.php'); $sql = "SELECT * FROM menu_items WHERE reference=1"; $result = $conn->query($sql); if ($result->num_rows > 0) { $rows = array(); while($row = $result-

我有一个问题,当我试着回显西里尔文字时,它会返回像

这是密码

<?
    include('db.php');

    $sql = "SELECT * FROM menu_items WHERE reference=1";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {

        $rows = array();
        while($row = $result->fetch_object()) {

            $rows[] = json_encode($row);

        } 
        $items = implode(',',$rows);
        echo '['.$items.']';
    }else {
        echo "ERROR";
    }

?>

有什么想法吗

排序规则:utf8\U通用\U ci

和db.php:

<?    
$servername = "localhost";
$username = "test";
$password = "Conqwe333!";    
$conn=mysqli_connect($servername,$username,$password,"test");   
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
?>


之后工作您应该为每个连接设置排序规则:

您还可以执行sql

SET NAMES utf8;
但不推荐这样做



我认为问题是退后了一步,请尝试首先正确编码西里尔字母:

之前添加$sql

$conn->query('SET NAMES utf8');
你可以阅读更多关于它的内容


此外,您还需要为浏览器设置适当的标题。您可以通过多种方式来完成,例如在MetaHTML标记中或使用
标题('Content-Type:text/html;charset=utf-8')

我假设您使用的是保加利亚语和UTF8,同样适用于俄语和其他语言,只需将“bg”更改为正确的字符串即可

我不建议您使用cp1251,因为它在apache mod_rewrite和其他类似工具中意外中断

您需要执行以下检查:

  • 检查数据库/表排序规则是否为UTF8。它可能是utf8\u general\u ci或保加利亚语-差异最小,与排序更相关。(utf8\u常规\u ci完全可以)
  • 检查是否在connect之后立即执行以下语句-
    设置名称UTF8。您可以执行
    $mysqli->query(“设置名称utf8”)
  • 确保你有合适的“标签”。这里有一个例子:

Нов сайт :)

mysql表格菜单项的排序规则是什么?文件上是否有正确的“bom”和标题?不要使用短标记
尝试调用
SET NAMES='UTF8'连接后的sql查询。@holodoc我不这么认为。再读一遍你喜欢的文档,更仔细地去做,像$conn->set_charset(“utf8”);工作!对不起,我的
集合名称
语法有误。无论如何,有一个更好的方法:)我只是使用$conn->set_字符集(“utf8”);没关系,但如果不起作用,请尝试使用
设置名称utf8
。集合名称不仅会更改字符集,还会同时更改3-4个配置值。另外请注意,如果未找到正确的HTML标记,则不会显示西里尔字母,除非您单击浏览器的“字符集”菜单。
$conn->query('SET NAMES utf8');