ホームページ  >  に質問  >  本文

mysqli がストアド プロシージャを呼び出すと、受信した mysql は常に文字化けします。 (操作手順、詳細、スクリーンショットを添付します)

ビジネス シナリオ: PHP ページは、1 つの入力パラメーターと 1 つの出力パラメーターを持つ mysql ストアド プロシージャを呼び出します。
問題点: 正常に実行できるのですが、データベースにパラメータを入力すると必ず文字化けが表示されます。

PHP ページのコードは次のとおりです

<head>
<meta charset="utf-8">
</head>
<?php
$conn = new MySQLi("数据库地址","数据库用户","密码","数据库名");
mysqli_query($conn,"SET NAMES utf8");
$info_name_cn='测试x201';
$info_name_cn=mb_convert_encoding($info_name_cn,'UTF-8');
$result=$conn->query("CALL x2('$info_name_cn',@exeout_rows)");
$result=$conn->query("SELECT @exeout_rows");
$recordset=mysqli_fetch_assoc($result);
$exeout_rows=(int)$recordset["@exeout_rows"];
?>
<div>---|<?php echo $exeout_rows; ?>|<?php echo mb_detect_encoding($exeout_rows); ?>|---</div>


mysql ストアド プロシージャのコードは次のとおりです

CREATE DEFINER=`数据库名`@`%` PROCEDURE `x2`(
IN exein_info_name_cn VARCHAR(5)
,OUT exeout_rows int
)
BEGIN
        set exeout_rows=1;
         
        insert into 测试表
        (
        info_name_cn
        )
        values
        (
        exein_info_name_cn
        );
END

mysql データベースでは、テストテーブルは「utf8/utf8_ganaral_ci」、文字セットとテストテーブルの内部フィールド info_name_cn の文字セット

**越狱兔**越狱兔1939日前1143

全員に返信(3)返信します

  • innocence

    innocence2019-07-27 11:41:55

    *.phpファイルのエンコードの問題

    返事
    1
  • **越狱兔

    はい。ありがとうございます。これで完了です。 Notepad++ を直接使用してコピー&ペーストを行っているため、.php ファイルでエンコードの問題が発生しているようです。 操作手順は後述します(初心者なので達人の方は気にしないでください) 1. 新しい abc.txt ファイルを作成し、ファイルを utf8 形式で保存し、名前を abc.php に変更して開きます。 2. 以前に作成したコードを txt メモ帳で開き、コピーして abc.php ファイルに貼り付けます。保存して閉じます。 3. ソフトウェア Notepad++ を使用して abc.php を開き、[エンコーディング] 項目で UTF-8 を選択します (BOM ヘッダーを避けるため)。

    **越狱兔 · 2019-07-27 15:12:50
  • **越狱兔

    **越狱兔2019-07-22 17:03:00

    補足:同じ状況で、ファイル保存時のエンコード方式をASCIに変更したところ、GBKに設定するとページコードが正常に動作しました。

    返事
    0
  • キャンセル返事