【问题标题】:CodeIgniter model not right with where conditionCodeIgniter 模型不适合 where 条件
【发布时间】:2013-04-04 13:44:33
【问题描述】:

我的模型中有这段代码:

$this->db->where('transaction_income_barcode.barcode_number', $barcode_number);

$barcode_number 的值为000500007301000005304778

所以我用 PHP 比较它是正确的值:

if($_POST['barcode_number'] == '000500007301000005304778')

但不知何故,通过模型它无法正常工作。

有什么想法吗?

【问题讨论】:

  • 看不出来。生成的查询是什么? ($this->db->last_query()) 什么不起作用?
  • 我无法从数据库中获取数据.. 在数据库中我的条形码编号为 000500007201000005304777 但是当我使用活动记录创建查询时我无法获取数据
  • 这给了你什么? var_dump($this->db->last_query()); exit
  • string(351) "SELECT transaction_outcome_barcode.*, transaction_detail.nominalID, transaction_detail.nominalID FROM (transaction_outcome_barcode) LEFT JOIN transaction_detail ON @9876543434 .id = transaction_outcome_barcode.detailID WHERE transaction_outcome_barcode.transactionID = '18' ORDER BY transaction_detail.nominalID asc" 1
  • 你的问题是关于barcode_number,但是这个查询有transactionID的条件。你是var_dump()ing 你执行这个查询吗?

标签: codeigniter where


【解决方案1】:

忘掉所有var_dump()或复杂last_query()的喋喋不休,只需按照CI流程分析你的代码并添加:

$this->output->enable_profiler(TRUE);

在您的控制器中激活呼叫后。这将显示您的FULL SQL QUERY(实际上是该页面上的所有查询)。

最干净的解决方法,我怀疑您的值正在转换为int,它会删除领先的000

通过强制转换来解决这个问题:

$this->db->where('transaction_income_barcode.barcode_number', (string)$barcode_number );

附注:
不要使用 $_POST['barcode_number'] 而是使用 CI 的 $this->input->post('barcode_number'); 是安全的

【讨论】:

  • 很高兴听到,看看 codeigniter 用户指南,它给了你很好的例子!
猜你喜欢
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多