日期:2014-05-16  浏览次数:20764 次

天,突然发现MySQL的一个新特征!这是真的吗? 两个单引号
下载最新版的phpMyadmin导出一个数据表,居然发现里面有错误的代码(刚开始的时候以为),然后反复测试了很多遍。发现是没有问题的。

老写法:
SQL code
INSERT INTO `ba_plus` VALUES ('27', '友情链接模块', '<m:item name=\'友情链接模块\' link=\'friendlink_main.php\' rank=\'plus_友情链接模块\' target=\'main\' />', '', '织梦团队', '1', '');


新写法:
SQL code
INSERT INTO `ba_plus` VALUES (27, '友情链接模块', '<m:item name=''友情链接模块'' link=''friendlink_main.php'' rank=''plus_友情链接模块'' target=''main'' />', '', '织梦团队', 1, '');


新写法为什么是正确的啊?两个单引号一起


测试的表结构:
SQL code

CREATE TABLE IF NOT EXISTS `ba_plus` (
  `aid` mediumint(8) unsigned NOT NULL auto_increment,
  `plusname` varchar(30) NOT NULL default '',
  `menustring` varchar(200) NOT NULL default '',
  `mainurl` varchar(50) NOT NULL default '',
  `writer` varchar(30) NOT NULL default '',
  `isshow` smallint(6) NOT NULL default '1',
  `filelist` text,
  PRIMARY KEY  (`aid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;



------解决方案--------------------
直接在MYSQL命令工具中试一下呢? 会不会是PHP的一些功能。
------解决方案--------------------
引用好奇怪哦,么有报错,运行成功,但是并没有完全写入。到了单引号哪里就断了。

------解决方案--------------------
php帮你转得把
------解决方案--------------------
php应该会报错的。。肯定Navicat 8动了手脚。
------解决方案--------------------
有个术语叫escape, 应该是客户端工具提前帮你进行了转换。
------解决方案--------------------
。。。
转义字符。
在字符串里的'要转换成''
------解决方案--------------------
就是转义字符吧。oracle里是'
------解决方案--------------------
话说你这个新发现和某个类C语言(C/C++/Java/C#)的使用者,突然发现可以用
SQL code
SELECT * FROM table WHERE x <> 1