業務場景: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的字元集�
*.php檔案編碼問題
補充:同樣情況下,我將檔案儲存編碼方式改為ASCI,頁面代碼設定為GBK後運作正常。