我试图返回个人电话号码为空(如"“中)或NULL的记录。请检查此代码
$this->db->select('i.id, i.name, i.phone, b.date')
->from('bookings AS b')
->join('individuals AS i', 'b.individual_id = i.id')
->where('b.status', 'confirmed')
->where('b.date >=', '2022-09-12')
->where('b.date <=', '2023-01-15')
->where('i.phone = "" OR i.phone IS NULL')
->order_by('b.date', 'ASC')
->get();
结果是它为Phone返回NULL值,但where子句中的日期范围被覆盖,该字段的值也为NULL。
这让我想起了
object(stdClass)[129]
public 'id' => string '52393' (length=5)
public 'name' => string 'Mrs Janet dooley' (length=17)
public 'phone' => null
public 'date' => null
1 =>
object(stdClass)[198]
public 'id' => string '32277' (length=5)
public 'name' => string 'Ms Rita molongi' (length=16)
public 'phone' => null
public 'date' => null
2条答案
按热度按时间sf6xfgos1#
请从查询中删除条件(i.phone =“”OR)并验证结果。查询中无需包含空条件。
如果您无法获得结果,请告知我,我将协助您解决问题。
您也可以使用-〉where('i.phone',NULL);
nwlqm0z12#
您的“OR”正在中断查询,因为CI将直接打印出来,AND和OR之间没有中断。执行echo $this-〉db-〉last_query();来确认。答案是插入括号:
您也可以执行group_start,但这取决于您的配置项版本。
Grouping WHERE clauses in Codeigniter