mysqli がストアド プロシージャを呼び出すと、受信した mysql は常に文字化けします。 (操作手順、詳細、スクリーンショットを添付します)
**越狱兔
**越狱兔 2019-07-22 15:35:41
0
3
1192

ビジネス シナリオ: 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 の文字セット

**越狱兔
**越狱兔

全員に返信(2)
innocence

*.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
流氓越狱兔

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート