`加了这个符号的mysql语句可以避免字段名或表名是SQL语句关键词出错,但是这样的话这个系统就只能用MYSQL数据库了,如果要变更数据库的话,那些语句还是要重新写,我们开发系统要不要加上这个呢?

解决方案 »

  1.   

    例如:SELECT `id`,`pid` FROM `jx_access` WHERE 1
      

  2.   

    ` 是 mysql 的转义符,只要你不在列名、表名中使用 mysql 的保留字或中文,就不需要转义
    其他数据库也同样有保留字,如使用的话也同样需要转义,只是转义符不同而已只要你不去使用保留字,那么就不需要转义
      

  3.   

    那只能说明你对数据库操作这一块没有进行代码设计。class database{
        public function Quote($t){ return $t;}
    }class mysql extends database{
        public funciton Quote($t){ return "`".$t."`";}
    }class sqlite extends database{
    }
      

  4.   


    确实不咋滴,thinkPHP我也研究过了,只是做到mysql加转义符,其他数据库不加,而且thinkPHP的加转义符功能也非常有限,只是对传入的一个字符加,要是直接写条件就不加了。例如 id=1 传进去就不加了。感觉该功能还是做的很鸡肋!
      

  5.   


    听你这么一说,我很平衡啊。我感觉不用THINKPHP是对的,自己动手好
      

  6.   

    我自己在搞框架,基本成型,数据库这块有待加强,thinkPHP总体感觉使用起来有点复杂,虽然分析它的代码也没什么难度
      

  7.   


    上次看到别人发的一个thinkphp执行SQL的 我打了个哆嗦...突然间觉得是不是要像helloyou0说的,值得研究的只有zend的框架.
      

  8.   

    用 php 去实现 ORM 简直是天方夜谭
      

  9.   

    大部分的表名和字段名可以不用,但是涉及到group,order 等保留字了就要必须加了
      

  10.   

    先说楼主的问题, 我好像很少碰到一定要加的情况(关键字)...起名字的时候稍加注意就行了.
    要支持多数据库, 这个算是小问题了, 麻烦在各个数据库的sql都有很多其它差异...
      

  11.   

    我还说过Zend_DB_Table系列用起来也不爽......哈哈ORM这个麻烦是object和关系型数据本身的差异造成的,所以就算是其它语言的实现,也有各种麻烦,也不够爽.
    只有等到对象型数据库真正普及了,才能一爽到底....随便介绍个新玩意:
    http://redbeanphp.com/不够普及,也没深入了解,但它的感觉比较接近...