gpt4 book ai didi

php - CDbCommand执行SQL语句失败: SQLSTATE[42000]:

转载 作者:行者123 更新时间:2023-11-29 08:01:44 30 4
gpt4 key购买 nike

我正在尝试获取我的 yii 应用程序的时间范围。

这是我的模型:

public function timeRange($attribute, $params) {

$criteria = new CDbCriteria;

$criteria->addCondition(
"WHERE ('jam_keluar' > '{$this->jam_masuk}' OR 'jam_masuk' < '{$this->jam_keluar}')".
"OR ('jam_masuk' < '{$this->jam_keluar}' AND 'jam_keluar' > '{$this->jam_keluar}')"
);

$record = self::model()->exists($criteria);
if(!empty($record)) {
$this->addError('jd_id', 'Item already exists within range.');
return false;
}

}

但我收到以下错误:

CDbCommand failed to execute the SQL statement: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE ('jam_keluar' > 03:00:00' OR 'jam_masuk' < '12:00:00')OR ('jam_masuk' < '1' at line 1. The SQL statement executed was: SELECT 1 FROM `a_jadwal` `t` WHERE WHERE ('jam_keluar' > 03:00:00' OR 'jam_masuk' < '12:00:00')OR ('jam_masuk' < '12:00:00' AND 'jam_keluar' > '12:00:00') LIMIT 1 

有人吗?

最佳答案

您需要从 addCondition 中删除“WHERE”,因为 addCondition 会为您处理该问题。还可以用引号对所有值进行转义,但不要在列名称两边加上引号。

您应该使用 CDbCriteria::compare 或至少使用带有参数的 addCondition 以避免 SQL 注入(inject):

// Use the solution with CDbCriteria::addCondition
$criteria->addCondition(
"WHERE (jam_keluar > :jam_masuk OR jam_masuk < :jam_keluar)".
"OR (jam_masuk < :jam_keluar AND jam_keluar > :jam_keluar)",
array(
':jam_masuk' => $this->jam_masuk,
':jam_keluar' => $this->jam_keluar
)
);

// Or use the solution with CDbCriteria::compare
$criteria->compare('jam_keluar', '>'.$this->jam_masuk, false);
$criteria->compare('jam_masuk', '<'.$this->jam_keluar, false, 'OR');
$criteria->compare('jam_masuk', '<'.$this->jam_keluar, false, 'OR');
$criteria->compare('jam_keluar', '>'.$this->jam_keluar, false);

关于php - CDbCommand执行SQL语句失败: SQLSTATE[42000]:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23654989/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com