|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
mysql的prepare其实是本地PHP客户端模拟的,并没有根据你mysql的设置做字符集的调整。应该交与mysqlserver端做prepare,同时得调用mysql_set_character_set去操作,server才会按照字符集去做转义。server|变量|办理
比来写procedure,碰到一些成绩。个中我以为关于“用变量名作为表名”的成绩较有代价,写出和人人一同分享。请列位如有好的办理计划必定要不惜见教。
情形:
假如你在写procedure时要依据特定变量的值静态创立table(表名是全体或部分特定变量的值)。比方:
declare@tablenamechar(10)
//ifsomestatement
set@tablename=test
你想用变量@tablename的值作为表名创立一个新表,那末用createtable@tablename(testchar(8))语句在SQLserver2k中实行就会碰到成绩,
办理(接上例):
//假如表不存在则创立
IFnotEXISTS(SELECTnameFROMsysobjects
WHEREname=@tablenameANDtype=U)
begin
set@createtable=createtable+@tablename+(mynamechar(2))
exec(@createtable)
end
<完>
php本地模拟的prepare底层就是mysql_real_escape_string,所以必须得用mysql_set_character_set去设置mysql->charset,否则就存在字符集问题。 |
|