加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com/)- 数据分析、网络、云渲染、应用安全、大数据!
当前位置: 首页 > 数据库 > MySql > 正文

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

发布时间:2020-09-17 21:06:38 所属栏目: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 `disagree_u

今天做程序需要用到一个存储过程,然后用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}');"); 需要注意的代码已经标绿。在创建存储过程的时候,。

(编辑:鄂州站长网)

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

    推荐文章
      热点阅读