【问题标题】:Unexpected Mysqli WHERE is not null Value Returned出乎意料的Mysqli WHERE不是空值返回
【发布时间】:2015-06-18 20:31:51
【问题描述】:

Mysqli 查询包含数据行的表。

当我使用这个SELECT 时,当确实存在具有所需请求的行时,它不会返回任何行。

我已经写了几种我在各种参考资料中看到的方式,但都没有返回任何行。

我希望在(*) 中检索(SELECT) 最新的(DESC)(LIMIT 1)(*) 其中(licensePath) 在单元格(IS NOT NULL) 中有一些东西。

问。我想知道我需要在我的选择语句中调整什么以返回所需的结果?

选择:

$query = "SELECT * FROM driver_docs WHERE driver_profileId LIKE '$uid' AND WHERE licensePath IS NOT NULL ORDER BY datetime_upload DESC LIMIT 1";
    $result = mysqli_query($conn, $query);
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);

    if ($row) { 
        if ($row["licensePath"]) {
            echo "license";
        } 
    }
    else {
        echo "NO ROWS";
    }

【问题讨论】:

  • or die(mysqli_error($conn)) 添加到mysqli_query() 会出现语法错误。
  • LIKE '$uid' 传递了什么?您可能想改用WHERE driver_profileId = '$uid'。 LIKE 可能不会返回您要查找的内容。
  • 完全删除 WHERE 后是否得到结果?
  • 我假设 licensepath 是 text 或 var char,但是 null 和 "" 都是不同的值。试试licenspath != ""
  • 好吧,还是试试我说的WHERE licensePath != "" AND ....,就像说的 2x 可能会给你带来问题,像 phpmyadmin 这样的 dbms 是怎么说的?

标签: php mysqli notnull


【解决方案1】:

空值和空值是不一样的。 由于您的单元格是 var_char,您的文本将自动显示为空值。 这意味着您使用 != '' 而不是 IS NOT NULL。

NULL 值很可能被输入为 NULL。

-写在我回家路上的公交车上的电话上。 请原谅我的语法错误和/或未完成的回答。

【讨论】:

    【解决方案2】:

    $query = "SELECT * FROM driver_docs WHERE driver_profileId LIKE '$uid' AND WHERE licensePath IS NOT NULL ORDER BY datetime_upload DESC LIMIT 1";

    您使用了 2 个 where 子句。只需删除第二个“Where”子句并使用“And”运算符添加两个条件。它应该可以工作。

    【讨论】:

    • WHERE driver_profileId LIKE '$uid' AND licensePath IS NOT NULL ORDER BY datetime_upload DESC LIMIT 1";
    猜你喜欢
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    相关资源
    最近更新 更多