【问题标题】:Sql operator "and" and "or" not working correctlySql 运算符“and”和“or”无法正常工作
【发布时间】:2018-01-30 12:55:01
【问题描述】:

当我运行此代码时,布尔 andor 操作似乎存在问题:

$ne = News::find(['conditions' => 'title_md = "' . htmlspecialchars($_post['title_md']) . '"  OR alias = "'.$item->alias.'" AND id !=  ' . $id])->toArray();

if(count($ne) < 1)里面的条件返回true,但是我需要得到false,因为id目前没有被占用。

【问题讨论】:

  • 您应该用括号将 OR 周围的条件封装起来
  • 您需要阅读 sql 注入。关于你的问题,你不应该像这样混合ANDOR。您需要使用括号来获得所需的确切结果。

标签: php mysql phalcon phalcon-orm


【解决方案1】:

这是使用 Phalcon 的 ORM 全部潜力的正确查询。

$ne = News::find([
    'conditions' => '(title_md = :title: OR alias = :alias:) AND id != :id:',
    'bind' => [
        'title' => $_POST['title_md'],
        'alias' => $item->alias,
        'id' => $id,
    ]
])->toArray();

正如上面提到的,在绑定参数时必须更加小心,以避免 SQL 注入。文档中的更多示例和操作方法:https://docs.phalconphp.com/zh/3.2/db-models#binding-parameters

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2015-02-17
    • 2015-11-27
    • 2015-04-25
    相关资源
    最近更新 更多