下载最新版的phpMyadmin导出一个数据表,居然发现里面有错误的代码(刚开始的时候以为),然后反复测试了很多遍。发现是没有问题的。老写法:
INSERT INTO `ba_plus` VALUES ('27', '友情链接模块', '<m:item name=\'友情链接模块\' link=\'friendlink_main.php\' rank=\'plus_友情链接模块\' target=\'main\' />', '', '织梦团队', '1', '');新写法:
INSERT INTO `ba_plus` VALUES (27, '友情链接模块', '<m:item name=''友情链接模块'' link=''friendlink_main.php'' rank=''plus_友情链接模块'' target=''main'' />', '', '织梦团队', 1, '');新写法为什么是正确的啊?两个单引号一起
测试的表结构: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 ;

解决方案 »

  1.   

    直接在MYSQL命令工具中试一下呢? 会不会是PHP的一些功能。
      

  2.   


    好奇怪哦,么有报错,运行成功,但是并没有完全写入。到了单引号哪里就断了。
    CMD里面运行SQL:无报错,但是没保存全部。mysql> INSERT INTO `ba_plus` VALUES (27, '友情链接模块', '<m:item name=''友情链
    接模块'' link=''friendlink_main.php'' rank=''plus_友情链接模块'' target=''main''
     />', '', '织梦团队', 1, '');
    Query OK, 1 row affected, 3 warnings (0.00 sec)在Navicat 8里面运行导入SQL文件,没有报错的。都运行成功,且输入都是导入成功的。
    CMD里面导入失败,导入到了【<m:item name='】这一段而已。
      

  3.   

    这个就可以理解了。 Navicat 8 显然做了某些东西。 
      

  4.   

    php应该会报错的。。肯定Navicat 8动了手脚。
      

  5.   

    有个术语叫escape, 应该是客户端工具提前帮你进行了转换。
      

  6.   

    PHP没有报错啊。CMD也没有,但是CMD并没有写入正确。
    DEDE自带的MYSQL管理界面可以直接运行写入成功的,Navicat 8也是一样的可以直接运行写入成功。
      

  7.   

    话说你这个新发现和某个类C语言(C/C++/Java/C#)的使用者,突然发现可以用
    SELECT * FROM table WHERE x <> 1替代SELECT * FROM table WHERE x != 1是一个性质