首页 文章

Yii中对数据库的错误请求?

提问于
浏览
0

我需要从这样的请求中选择数据库值“select * from prem_message where toid 12 and del_to 0”?我写了这个查询,但是不正确,请写下来改正:

$criteria = new CDbCriteria();

        // Select a fields from the database
        $criteria->select='id';
        $criteria->select='from_id';
        $criteria->select='to_id';
        $criteria->select='msg';
        $criteria->select='is_read';
        $criteria->select='from_del';
        $criteria->select='to_del';
        $criteria->select='date';

        // Where to_id == current user id and not delete
        $criteria->condition='to_id=:to';
        $criteria->addCondition('to_del=:del','AND');
        $criteria->params=array(':to'=>Yii::app()->user->id);
        $criteria->params=array(':del'=> 0 );

        $model = Message::model()->findAll($criteria);

Error:

CDbException CDbCommand无法执行SQL语句:SQLSTATE [HY093]:参数号无效:绑定变量数与令牌数不匹配 . 执行的SQL语句是:SELECT date FROM prem_message t WHERE(to_id =:to)AND(to_del =:del)

2 回答

  • 1

    它应该改写为:

    $criteria = new CDbCriteria();
    
        // Select a fields from the database
        $criteria->select='id, from_id, to_id, msg, is_read, from_del, to_del, date';
    
        // Where to_id == current user id and not delete
        $criteria->condition='to_id=:to';
        $criteria->addCondition('to_del=:del','AND');
        $criteria->params=array(':to'=>Yii::app()->user->id, ':del'=> 0 );
    
        $model = Message::model()->findAll($criteria);
    

    这是因为如果您分配变量几次 - 新值将覆盖前一个变量 .

  • 1

    你重写了params . 这必须修复你的错误:

    $criteria = new CDbCriteria();
        // Select a fields from the database
        $criteria->select='id';
        $criteria->select='from_id';
        $criteria->select='to_id';
        $criteria->select='msg';
        $criteria->select='is_read';
        $criteria->select='from_del';
        $criteria->select='to_del';
        $criteria->select='date';
    
        // Where to_id == current user id and not delete
        $criteria->condition='to_id=:to';
        $criteria->addCondition('to_del=:del','AND');
        $criteria->params=array(
            ':to'=>Yii::app()->user->id),
            ':del'=> 0
        );
        $model = Message::model()->findAll($criteria);
    

相关问题