【问题标题】:codeigniter escaping queriescodeigniter 转义查询
【发布时间】:2016-02-28 11:23:00
【问题描述】:

这个逻辑是怎么回事:

我有一本书叫《日与夜》

$this->db->select('b.Book_Name,Author');
$this->db->from('Books b');
$this->db->where('Book_Name',$book['Book_Name']);
$query = $this->db->get();

if($query->num_rows() > 0 ) 
    {
     $arr['by_genre'] = $query->result_array();
    }

0 个结果,

但是,如果我将名称更改为“Day an Night”,我会得到

  ['Book_Name'=>'Day an Night', 
     'Author'=>'Gene Night',  
     'ISBN'=> '124BA123', ..]

所以我的问题是如何告诉我的查询转义“和”,将其视为字符串而不是条件。

【问题讨论】:

  • 什么是 $book['Book_Name'] ?你确定它的正确和设置
  • $book['Book_Name'] 是字符串'Day and Night'
  • 你能展示你的全部功能吗..
  • 我会使用参数化查询。我没有使用过 codeigniter,但这里有一个线程,stackoverflow.com/questions/1615792/…
  • 我不知道,正如我所说的,我没有(也从未)使用过代码点火器。不过我会使用参数化查询,因为这样你就不必担心转义了。

标签: php mysql codeigniter


【解决方案1】:

这是 CodeIgniter 3.0.0 和 3.0.1 中的一个错误。 3.0.2版本修复,目前稳定版本为3.0.3 ...

您需要做的就是更新您的 CI 设置。

【讨论】:

    【解决方案2】:

    活动记录类或预期用途有问题?

    下面的查询解决了问题:(允许在书名中)

    $sql = "SELECT b.Book_Name,author
            FROM Books b WHERE b.CARD_NAME = ?";
    
    $query = $this->db->query($sql, array($book['Book_Name']));
    

    Vs:不允许and在书名中。

    $this->db->select('b.Book_Name,Author');
    $this->db->from('Books b');
    $this->db->where('Book_Name',$book['Book_Name']);
    $query = $this->db->get();
    

    【讨论】:

    • 在 CI3 中称为“Query Builder”,不是活动记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多