解决php调用带输出参数的MySQL返回中文时乱码

来源:互联网 发布:删除数据库null 编辑:程序博客网 时间:2024/06/06 00:23
0


【错误经过】:调用MySQL存储过程时,需要根据传入参数判断后输出一段中文字符串变量,结果php获取后显示为"??????,???!".

存储过程

delimiter //CREATE PROCEDURE P__User_RegUser(out strMessage varchar(1000),in strAlias varchar(100),in strPwd varchar(100))Beginset strMessage = '';if not exists(select * from _User where UserName = strAlias) thenbegininsert into _User(UserName, PassWord, Activeflag, CreateTime) values(strAlias, strPwd, 0, now());end;elsebeginset strMessage = '用户已存在,请重试!';end;end ifEnd;//

【PHP代码】:

try {$username = 'abandonship';$pwd = 'banlao123';mysql_query("set @Message");$result = mysql_query("call P__User_RegUser(@Message, '{$username}','{$pwd}')", $conn) or die("Query failed:".mysql_error());$result = mysql_query("select @Message",$conn); $row = mysql_fetch_row($result);$message = $row[0];if($message != ''){echo $message;} else{print "Last id is:".mysql_insert_id();}} catch (Exception $e) {echo "Exception Info:".$e;}

【处理过程】:

1. 先后检查表、字段、存储过程的编码方式,发现皆是utf-8。

2. 先后查找关于phpMyadmin、MySQL Workbench等关于设定编码格式的资料,未果。

3. 尝试传入FreeBSD上测试,结果显示正常!!这难道和win7+IIS7.5有关?十分不解

结果暂时在打开连接串后加入以下三句以强制转换,结果显示正常,-_______-!!!!!等晚上在win7上装个apache, 在测试下!

mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER_SET_CLIENT=utf8"); mysql_query("SET CHARACTER_SET_RESULTS=utf8"); 


原创粉丝点击