Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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_Collation - Fatal编程技术网

如何在php中将希伯来语值插入mysql数据库

如何在php中将希伯来语值插入mysql数据库,php,mysql,collation,Php,Mysql,Collation,我试图在mysql数据库中插入一个希伯来语值,而不是希伯来语值 ××דהדכ××××” 默认情况下,表的排序规则是拉丁1_瑞典_ci,我也尝试更改为utf-8_general_ci、hebrew_bin、hebrew_general_ci,但结果仍然相同 在我的代码中,我当然使用meta标记来配置字符集: <meta charset="UTF-8"> 我正在phpmyadmin中查看结果。检查排序规则\u连接: show variables like '%collation

我试图在mysql数据库中插入一个希伯来语值,而不是希伯来语值

××דהדכ××××”

默认情况下,表的排序规则是拉丁1_瑞典_ci,我也尝试更改为utf-8_general_ci、hebrew_bin、hebrew_general_ci,但结果仍然相同

在我的代码中,我当然使用meta标记来配置字符集:

<meta charset="UTF-8">

我正在phpmyadmin中查看结果。

检查排序规则\u连接:

show variables like '%collation%'
{"mysql:host=$host;dbname=$db;charset=utf8"}

您应该确保:

  • 您可以在php中设置utf-8
  • 在连接中使用utf-8
  • 您的表格定义为utf-8\u general\u ci
  • 特定字段定义为utf-8_general_ci

  • 然后,您应该能够在phpadmin中正确查看希伯来语或任何其他语言。我已经解决了我的希伯来语问题。这是一个数据库和表行/字段编码问题。这是我使用的解决方案。我从另一个答案获得了帮助,下面给出了链接,以防任何人需要

  • 数据库排序规则必须是
    utf8\u general\u ci
  • 表格的希伯来语排序必须是
    utf8\u general\u ci
  • 在PHP连接脚本中

    header('Content-Type: text/html; charset=utf-8');
    
  • 在xhtml头部标记中,放置

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
    如果您正在使用PDO,请将

    $conn->query("SET NAMES 'utf8'");
    

  • 设置字符集以实现解决方案

    在创建数据库时

    CREATE DATABASE db_name
     CHARACTER SET utf8
     DEFAULT CHARACTER SET utf8
     COLLATE utf8_general_ci
     DEFAULT COLLATE utf8_general_ci
     ;
    
    或者如果数据库已经创建

    CREATE TABLE table_name(
     ...
     )
     DEFAULT CHARACTER SET utf8   
     COLLATE utf8_general_ci;
    
    或在编写查询时

    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);
    
    
    $re = mysql_query('SHOW VARIABLES LIKE "%character_set%";')or die(mysql_error());
    while ($r = mysql_fetch_assoc($re)) {var_dump ($r); echo "<br />";} 
    
    mysql\u查询(“SET character\u SET\u results='utf8',character\u SET\u client='utf8',character\u SET\u connection='utf8',character\u SET\u database='utf8',character\u SET\u server='utf8',$conn);
    $re=mysql\u query('SHOW VARIABLES,如“%character\u set%”)或die(mysql\u error());
    而($r=mysql_fetch_assoc($re)){var_dump($r);echo“
    ”;}
    我想说,为了确保值能够很好地传递到数据库,我会在插入数据库并打印值之前添加一个模板,例如:

    die($_POST['thevalue']);
    //insert to database.
    //...
    
    如果进展顺利,那么问题就出在数据库方面,在数据库方面,我会尝试使用这种排序规则

    |希伯来语| ISO 8859-8希伯来语|希伯来语|通用| ci | 1|

    按照你的建议

    但如果在php端失败,原因可能是服务器不支持希伯来语,请确保在html输出文档上使用正确的元标记

    ...
    <meta charset="ISO 8859-8">
    ...
    
    。。。
    ...
    

    让我们知道它是如何进行的,祝你好运:)

    为了将来的使用,如果你有这个问题,并且你使用的是PDO而不是mysqli,你需要这样做:

  • 数据库(全部)排序规则必须是utf8\u general\u ci
  • 将表格的希伯来语排序规则也设置为utf8\u general\u ci
  • 在HTML“head”标记中,添加以下内容:
  • 在PHP连接文件中,在连接查询后添加,这一行:conn->exec(“set names utf8”);
  • 如果您使用的是类,那么您可能会将“conn”作为变量。 在这种情况下,您必须这样使用它: $this->conn->exec(“设置名称utf8”);
  • 希望这有助于未来的人有这个问题,并使用PDO。
    祝你好运。

    最终帮助我的是将字符集添加到连接:

    show variables like '%collation%'
    
    {"mysql:host=$host;dbname=$db;charset=utf8"}
    
    我想我已经弄明白了: 这是我的密码:

    $conn = mysqli_connect($dbserver,$dbuser,$dbpwd,$dbname);
    
    if (mysqli_connect_errno()){
        printf("Connection failed: %s\n" , mysqli_connect_errno());
        exit();
    }
    
    printf("Initial character set: %s\n", mysqli_character_set_name($conn));
    
    /* change character set to utf8 */
    if (!mysqli_set_charset($conn, "hebrew")) {
        printf("Error loading character set hebrew: %s\n", mysqli_error($conn));
        exit();
    } else {
        printf("Current character set: %s\n", mysqli_character_set_name($conn));
    }
    

    试试mysql\u set\u字符集('utf8')在插入值之前。@davidkonrad得到相同的结果。这可能有助于尝试在不使用phpMyAdmin的情况下获取和显示数据,因为它还需要正确的编码设置。很抱歉,我不理解您的答案。您能添加一些详细信息吗?谢谢。您需要进行一些疑难解答,执行我从您的HP脚本(并显示结果)以确保所有排序规则设置都正确。这很有帮助。谢谢!Sardar Raj这是我的魔术:mysql_查询(“设置名称‘utf8’”))+1