今天做程序需要用到一个存储过程,然后用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 Nvarchar(4000))
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},N'{$why}');");
需要注意的代码已经标绿。在创建存储过程的时候,设计中文的参数的数据类型需为Nvarchar,而在传递参数的时候也需要多加一个N。

最新文章

  1. Handler sendMessage 与 obtainMessage (sendToTarget)比较
  2. WCF初探-2:手动实现WCF程序
  3. AngularJS 表单提交后显示验证信息与失焦后显示验证信息
  4. PHPUML 生成UML
  5. 关于JS、JQuery、CSS的小知识点
  6. WLW 截屏插件
  7. Docker + Jenkins 持续部署 ASP.NET Core 项目
  8. Android View的重绘过程之Draw
  9. Linux 纯字符界面的玩法
  10. Java Web程序开发链接MySQL数据库
  11. 常用的头文件—— common.h
  12. 【转载】在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问,并可修改MySQL密码
  13. js-数组方法的使用和详谈
  14. 基于IDEA环境下的Spark2.X程序开发
  15. Git初级使用教程
  16. Unity3D手机平台分辨率自动匹配教程
  17. 解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 && 一般的浏览器input和button的高度不一致问题
  18. 3.Hive中查看数据来源文件和具体位置方法
  19. IE9以下程序开发不兼容项目罗列
  20. iDempiere 使用指南 销售发货流程

热门文章

  1. Sublime Text 3图标更改
  2. LCD1602小程序
  3. InstallShieldPro 2015中Basic MSI工程类型如何调用InstallScript脚本
  4. MyBatis的简单入门学习
  5. 往前端打smarty数据
  6. Codeforces Round #381 (Div. 2) D. Alyona and a tree dfs序+树状数组
  7. Android 自定义注解(Annotation)
  8. Java Spring-Spring框架概述
  9. C#正则_取出标签内的内容(非贪婪)
  10. 知识梳理——CSS篇