首頁  >  問答  >  主體

mysqli呼叫預存程序,傳入mysql總是亂碼。 (附操作流程、細節、截圖)

業務場景:php頁面呼叫mysql預存程序,有1個入參,1個出參。
出現問題:能正常執行,但入參資料庫後總是顯示亂碼。

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 天前1146

全部回覆(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
  • 取消回覆