天,突然发现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