加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql向存储过程中传递中文参数变成乱码的解决方案

发布时间:2020-12-11 23:54:36 所属栏目:MySql教程 来源:网络整理
导读:今天做程序需要用到一个存储过程,然后用php程序调用。 ??存储过程如下:delimiter $$CREATE PROCEDURE disagree_upgrade_detail(a int,b text)BEGINSET NAMES 'utf8';UPDATE `upgrade_detail` SET `disagree_description`=b WHERE `id`=a;INSERT INTO `disag
今天做程序需要用到一个存储过程,然后用php程序调用。
??存储过程如下: delimiter $$ CREATE PROCEDURE disagree_upgrade_detail(a int,b text) BEGIN SET NAMES 'utf8'; UPDATE `upgrade_detail` SET `disagree_description`=b WHERE `id`=a; INSERT INTO `disagree_upgrade_detail` SELECT * from `upgrade_detail` WHERE `id`=a; DELETE FROM `upgrade_detail` WHERE `id`=a; END; $$ PHP的调用代码片段如下: mysql_query("CALL disagree_upgrade_detail({$which},'{$why}');"); 后来在跑程序的时候发现一个问题。 由于$why这个变量的值是大部分情况存在中文,在传递给存储过程后,变成了带有?的乱码。在此之后我检查了php、数据库的编码已经统一,搞了很久还是一筹莫展。 最后我在http://topic.csdn.net/u/20070703/09/fbceeb45-1c8d-4009-ac84-cabe9fc315d7.html中找到了答案。对其进行了如下修改 delimiter $$ CREATE PROCEDURE disagree_upgrade_detail(a int,b varchar(4000)) BEGIN UPDATE `upgrade_detail` SET `disagree_description`=b WHERE `id`=a; INSERT INTO `disagree_upgrade_detail` SELECT * from `upgrade_detail` WHERE `id`=a; DELETE FROM `upgrade_detail` WHERE `id`=a; END; $$ PHP的调用代码片段如下: mysql_query("CALL disagree_upgrade_detail({$which},'{$why}');"); 需要注意的代码已经标绿。在创建存储过程的时候,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读