2016-10-21 7 views
1

私は人々がリンクを取って情報を入力してデータベースに保存される登録フォームを作ろうとしています。残念ながら、フォームを使用してアラビア語で情報を入力しようとすると、PhpMyAdminに未知の文字として格納されます。 私は次のことを成功させることなく試しました。データベースにアラビア語の文字を保存する際の問題

データベースハンドラページでデフォルトの文字セットを設定し
<meta charset="utf-8"> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  • $cfg['DefaultCharset'] = 'utf_8'; 
    $cfg['DefaultConnectionCollation'] = 'utf8_general_ci'; 
    
  • utf8_general_ci

    に、データベースの照合順序を変更し、次のようにインデックス内のデフォルトの文字セットを設定し

    • チャテーブルを照合しました照合順序utf8_general_ci

    • sqlとしてエクスポートされ、文字セットを編集しましたが、私はすでにUTF-8を見つけました。

    • ブラウザのユニコードがUTF-8に設定されていることを確認しました。

    そして、それは、それがどのように動作するかの例です:

    <form action="signup.php" method="POST" class="form"> 
    <input type="text" name="first"><br /> 
    <input type="text" name="uid"><br /> 
    <input type="date" name="dob"><br /> 
    

    -

    $first = $_POST['first']; 
    $uid = $_POST['uid']; 
    $dob = $_POST['dob']; 
    
    $sql = "INSERT INTO students (first, uid, dob) 
    VALUES ('$first','$uid', '$dob')"; 
    
    $result = mysqli_query($conn, $sql); 
    

    そして、彼らがDBに接続するために必要なファイルを介して接続しています。

    $cfg['DefaultCharset'] = 'utf_8'; 
    $cfg['DefaultConnectionCollation'] = 'utf8_general_ci'; 
    
    $conn = mysqli_connect("localhost", "root", "", "test2"); 
    
    if (!$conn) { 
        die("Connection failed: ". mysqli_connect_error()); 
    
    } 
    

    何が原因で起こっているのかわからず、私は速い修正が必要です。

    Preview of the error

  • +0

    PhpMyAdminには何も格納されません。ただし、ブラウザの設定が間違っている可能性があります。入力がデータベースにどのように入力されるのかは分かりませんでした。そのため、1ステップから100ステップの間に問題が発生する可能性があります。 – dezso

    +0

    質問を編集してより明確にしました。 @dezso –

    +0

    接続直後にこのクエリを実行してみてください: 'SET NAMES utf8' –

    答えて

    0

    これは、問題を修正しました。

    if (!mysqli_set_charset($conn, "utf8")) { 
        printf("Error loading character set utf8: %s\n", mysqli_error($conn)); 
        exit(); 
    } else { 
        printf("Current character set: %s\n", mysqli_character_set_name($conn)); 
    } 
    
    関連する問題