suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wenn MySQL eine gespeicherte Prozedur aufruft, ist das eingehende MySQL immer verstümmelt. (Anbei sind der Betriebsablauf, Details und Screenshots)

Geschäftsszenario: Die PHP-Seite ruft die gespeicherte MySQL-Prozedur auf, die 1 Eingabeparameter und 1 Ausgabeparameter hat.
Es ist ein Problem aufgetreten: Es kann normal ausgeführt werden, aber nach Eingabe der Parameter in die Datenbank werden immer verstümmelte Zeichen angezeigt.

Der PHP-Seitencode lautet wie folgt:

<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>
: Reihenfolge des internen Feldes info_name_cn der Testtabelle ist „utf8/ utf8_ganaral_ci“

Ich habe verschiedene Konvertierungsmethoden ausprobiert – der folgende Text
, aber die Ergebnisse waren alle verstümmelt – die Ergebnisse nach der Ausführung sind wie folgt

(ID ist) 29: Nicht konvertiert

//$info_name_cn=mb_convert_encoding($info_name_cn,' UTF-8');


(id is)30: In UTF-8 konvertieren
$info_name_cn=mb_convert_encoding($info_name_cn,'UTF-8');

(id is)31: Konvertieren in GB2312
$info_name_cn= mb_convert_encoding($info_name_cn,'GBK');

(id is)32: Konvertieren in GBK
$info_name_cn=mb_convert_encoding($info_name_cn,'GBK');

(id is)33: In BIG5 konvertieren
$info_name_cn= mb_convert_encoding($info_name_cn,'ASCII');

(id is)34: In ASCII konvertieren
$info_name_cn=mb_convert_encoding($info_name_cn,'ASCII');






Darüber hinaus kann das Ausführen des folgenden Codes normal funktionieren. Chinesisch zur Datenbank hinzufügen

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
1.png

**越狱兔**越狱兔1986 Tage vor1195

Antworte allen(3)Ich werde antworten

  • innocence

    innocence2019-07-27 11:41:55

    *.php文件编码问题

    Antwort
    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后运行正常。

    Antwort
    0
  • StornierenAntwort