ThinkPHP模型执行失败,怎么看构造的sql语句?

intergameover 2015-02-06 09:21:27
$User = M("User"); // 实例化User对象
$User->where("name=xx")->select();
echo $User->getLastSql();


上面语句如果where里面的条件写错了,程序执行到这里直接就调到异常处理,接着显示出错信息页面。下面的getLastSql根本不会执行。而且错误页面下面也看不到trace的图标。
怎么能看到TP构造的SQL语句呢?

...全文
1113 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
feraner 2015-02-14
  • 打赏
  • 举报
回复
TP 不是有log记录的么
种草德鲁伊 2015-02-11
  • 打赏
  • 举报
回复
引用 7 楼 intergameover 的回复:
问题是现在小组决定用ThinkPHP。 哪个框架更好些呢?
追求性能可以用php扩展像Phalcon,php的Zend和Laravel是非常不错的。 咱也是过来人了,深受thinkphp这个东西所害.
intergameover 2015-02-11
  • 打赏
  • 举报
回复
问题是现在小组决定用ThinkPHP。 哪个框架更好些呢?
bojimiyabojimiya 2015-02-11
  • 打赏
  • 举报
回复
似乎是可以在执行之前使用buildSql,当然我也没试过,刚翻了下源码只是猜测下 源码:

    /**
     * 生成查询SQL 可用于子查询
     * @access public
     * @param array $options 表达式参数
     * @return string
     */
    public function buildSql($options=array()) {
        // 分析表达式
        $options =  $this->_parseOptions($options);
        return  '( '.$this->db->buildSelectSql($options).' )';
    }
看小雪 2015-02-11
  • 打赏
  • 举报
回复
$User = M("User"); // 实例化User对象 $data = $User->where("name=xx")->select(); echo $User->getLastSql(); 你先打印出$User看是什么东西,然后再打印$data,接着再打印你的sql语句。
种草德鲁伊 2015-02-09
  • 打赏
  • 举报
回复
thinkphp是个烂框架,劝楼主不要再用它
kis龍 2015-02-09
  • 打赏
  • 举报
回复
同问, 怎么才能sql不报错
intergameover 2015-02-08
  • 打赏
  • 举报
回复
引用 3 楼 wander_wind 的回复:
name=后面的值要加单引号 另外debug要写true才有错误信息
我知道name的值要有单引号,这里我只是举个例子。我的真正目的是如果这里是个复杂语句,并且出错了。我想知道TP构造出来的sql是什么,这样可以容易的看出错误。
智商众筹 2015-02-07
  • 打赏
  • 举报
回复
name=后面的值要加单引号 另外debug要写true才有错误信息
intergameover 2015-02-07
  • 打赏
  • 举报
回复
引用 1 楼 mengfk000 的回复:
你把debug关掉,直接打印出来
define('APP_DEBUG',False); 直接显示: 页面错误!请稍后再试~
mengfk000 2015-02-07
  • 打赏
  • 举报
回复
你把debug关掉,直接打印出来

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧