php - 使用 Yii 的 CDbCriteria 的比较方法与空字符串

标签 php sql yii criteria

我正在制作一个新的 Yii CDbCriteria,并想添加以下条件:

$criteria = new CDbCriteria();
$criteria->compare('code', $code);

但是,在我的应用程序中,变量 $code 可以是空字符串。我在文档中读到:

When the value is empty, no comparison expression will be added to the search condition.

这对我来说不是理想的行为。我希望它与空字符串进行比较。有没有办法使用 compare 来完成此操作?

我还可以使用以下查询吗?安全吗?

$criteria->addCondition("code = $code");

如果是这样,compareaddCondition 之间的缺点/优点是什么?

最佳答案

CDbCriteria::compare()addCondition 的快捷方式包装器(无论如何,后者都会在其主体内调用)。该方法的设计涵盖了处理过滤条件的最常见用例;这就是为什么它会忽略“无意义”的输入。由于您的案例位于覆盖区域之外,因此您应该使用低级 addCondition,但有一个变化:

$criteria->addCondition('code = :code');
$criteria->params[':code'] = $code;

您还可以使用另一种快捷方式:

$criteria->addColumnCondition(array('code' => $code));

关于php - 使用 Yii 的 CDbCriteria 的比较方法与空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32253776/

相关文章:

php - Youtube 直播 API : liveStreamingNotEnabled

php - "Cannot set session ID after the session has started."测试表单时

基于表名模式的 SQL 内连接

php - yii 不保存模型

javascript - 带有 JSON 返回的 AJAX 请求未按照我的预期行为进行响应

java - SELECT 中的子查询可以返回多行吗?

SQL 可移植性陷阱

php - 标准条件;逻辑转换 (a+b)(c+d) 到 ((w ? x) ? y) ? z

Yii2 - hasOne 与 leftJoin

php - 当jquery ajax数据包含在php mysql查询中时如何正确显示jquery ajax数据