【请求指点】mysqli调用存储过程,传入mysql总是乱码。(已附操作过程、细节、截图)

hgwyl 2019-07-22 11:22:11
业务场景: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的字符集和排序顺序为"utf8/utf8_ganaral_ci"

我尝试不同转换不同编码方式——如下文字
但是结果都是乱码——执行后结果如下图片

(id为)29:不转换
//$info_name_cn=mb_convert_encoding($info_name_cn,'UTF-8');

(id为)30:转换为UTF-8
$info_name_cn=mb_convert_encoding($info_name_cn,'UTF-8');

(id为)31:转换为GB2312
$info_name_cn=mb_convert_encoding($info_name_cn,'GB2312');

(id为)32:转换为GBK
$info_name_cn=mb_convert_encoding($info_name_cn,'GBK');

(id为)33:转换为BIG5
$info_name_cn=mb_convert_encoding($info_name_cn,'BIG5');

(id为)34:转换为ASCII
$info_name_cn=mb_convert_encoding($info_name_cn,'ASCII');





另外,运行以下代码可以正常往数据库添加中文
<?php
$link = @mysql_connect("数据库地址","数据库用户名","数据库密码")
or die("连接失败" .mysql_error());
@mysql_select_db("数据表") or die("连接失败".mysql_error);
function insert(){
mysql_query("set names utf8");
$sqlinsert = "insert into 测试表(info_name_cn) values('李四')";
$resultinsert = mysql_query($sqlinsert);
if($resultinsert){
echo "insert data success";
}else{
echo "insert data fail".mysql_error();
}
}
insert();
mysql_close($link);
?>



请哪位施以援手~~~无限感谢~~~
...全文
172 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hgwyl 2019-07-23
  • 打赏
  • 举报
回复
昨晚联系了服务商,把character set system修改为utf8(phpmyadmin也确认看过了)。 但用utf8编码的方式,还是会显示“???”乱码。 目前只能用GBK顶着先了,回头有哪位大神帮忙解决了再改回来。 等待大神出现~
null_17 2019-07-22
  • 打赏
  • 举报
回复
没用过MySQLi,你可以换成pdo或者mysql_connect
hgwyl 2019-07-22
  • 打赏
  • 举报
回复
补充:同样情况下,我将文件保存编码方式改为ASCI,页面代码设置为GBK后运行正常。
hgwyl 2019-07-22
  • 打赏
  • 举报
回复
引用 1 楼 null_17 的回复:
没用过MySQLi,你可以换成pdo或者mysql_connect
因为我在php方面还是个新手,技术上也就是能赋值、粘贴、修改。不太敢去修改不同方式,哈哈哈哈 同样感谢啊

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧