我有一个查询应该通过rota表查看并选择idstaff然后查找当前未在该结果中找到的所有用户。只要idstaff不为null,此查询就可以正常运行,但是有些情况下idstaff将为NULL。在这种情况下,查询失败。有什么办法可以让它在两个实例中都能正常工作吗?
$query = sprintf("SELECT user.*
FROM user
WHERE user.iduser NOT IN (SELECT idstaff FROM rota WHERE idrota=%s)",
$this->db->GetSQLValueString($idrota, "int"));
$result = $this->db->query($this->db->link, $query) or die($this->db->error($this->db->link));
答案 0 :(得分:2)
直接从我的评论中删除,您的查询字符串应如下所示:
name LIKE CONCAT('%', ?, '%')
答案 1 :(得分:-1)
您应该添加NULL,因为默认情况下sql会跳过这些记录。
$ query = sprintf(" SELECT用户。* 来自用户 如果user.iduser为NULL或NOT IN(SELECT idstaff FROM rota WHERE idrota =%s)", $ this-> db-> GetSQLValueString($ idrota," int")); $ result = $ this-> db-> query($ this-> db-> link,$ query)或die($ this-> db-> error($ this-> db-> ;链接));