$article->add($data);
echo $article->getLastSql();
exit;贴出sql

解决方案 »

  1.   

    修改insert方法public function insert() {
    die("ok");
    }调用Article/insert 试试,看提示什么?
      

  2.   

    按你说的输出:ok
    我的问题是这样的,它把数据传递过去了。
    print_r($data);
    不加$article->add($data);
    一切执行正常,可以将数组中的内容输出来
    我还用$article->execute($aql)
    执行sql语句,可以插入到数据库,在数据库中有
    数据,会不会是我的php 6.0版本的问题?和
    Thinkphp有冲突。  同时感谢你们的回答
      

  3.   

    //if($data['category'] == '请选择' || $data['title']=='') {
            //$this->error('数据写入不完整,请重新输入');
    // }
    把上面这句话注释掉
        $result = $article->add($data);
        echo $article->getLastSql();
    再试试、还有检查下,你的model,是否做了验证。
      

  4.   


    $result = $article->add($data);
    或者改成
    $result = $article->data($data)->add();
      

  5.   

    我的model类:<?php 
    class ArticleModel extends Model {
    protected $_validate=array(
    array('title','require', '标题不能为空'),
    array('author','require', '作者必须要'),
    array('category','require', '文章类型不能为空'),
    array('content','require','文章内容不能为空'),
    array('createtime','require','发表时间必须')
    );
    }
     ?>我都测试好长时间了,为什么老是不行,难道是配置文件问题
    要不我把我的ThinkPHP model的add()方法贴出来看看
    我测试时读取数据可以,但插入和修改就出问题
    Thinkphp源码add方法,求指导:public function add($data='',$options=array(),$replace=false) {
            if(empty($data)) {
                // 没有传递数据,获取当前数据对象的值
                if(!empty($this->data)) {
                    $data           =   $this->data;
                    // 重置数据
                    $this->data     = array();
                }else{
                    $this->error    = L('_DATA_TYPE_INVALID_');
                    return false;
                }
            }
            // 分析表达式
            $options    =   $this->_parseOptions($options);
            // 数据处理
            $data       =   $this->_facade($data);
            if(false === $this->_before_insert($data,$options)) {
                return false;
            }
            // 写入数据到数据库
            $result = $this->db->insert($data,$options,$replace);
            if(false !== $result ) {
                $insertId   =   $this->getLastInsID();
                if($insertId) {
                    // 自增主键返回插入ID
                    $data[$this->getPk()]  = $insertId;
                    $this->_after_insert($data,$options);
                    return $insertId;
                }
                $this->_after_insert($data,$options);
            }
            return $result;
        }
      

  6.   

    问题是在log文件里没有找到记录,无从下手
      

  7.   

    你可以在 Db.class.php 的 773行附近的    public function insert($data,$options=array(),$replace=false) {
            $values  =  $fields    = array();
            $this->model  =   $options['model'];
            foreach ($data as $key=>$val){
                $value   =  $this->parseValue($val);
                if(is_scalar($value)) { // 过滤非标量数据
                    $values[]   =  $value;
                    $fields[]     =  $this->parseKey($key);
                }
            }
            $sql   =  ($replace?'REPLACE':'INSERT').' INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES ('.implode(',', $values).')';
            $sql   .= $this->parseLock(isset($options['lock'])?$options['lock']:false);
            return $this->execute($sql);
        }
    中逐条检查数据是否正确
    你用 execute 可以插入,只表示你手写的sql指令没有错误
    而 add 方法插入失败则表示程序组装sql指令时出现了问题
      

  8.   

    我用别人的环境就可以执行,我的appserv有问题,还是PHP版本的问题?
      

  9.   

    我使用其他人的php5.2.8版本可以完美执行而我的php6.0则出问题