php EMPTY 无法正常工作

标签 php mysql

我尝试仅在当前行为空时显示表单。当前数据库中的行不为空。它有一个日期.. 2/10/16 它被设置为 VARCHAR 。无论如何,当我使用以下内容时..它仍然显示表单,即使它不应该显示,因为该行不为空..

下面是代码

order = $_GET['uid'];
$stmt=$this->db->prepare("SELECT * FROM orders WHERE order_num = :order");
$stmt->execute(array(":order"=>$order));
$row=$stmt->fetch(PDO::FETCH_ASSOC);

if (empty($row['giventoatpdate'])) {
    echo 
    "
    <form name='atpdate' method='POST'>
    Date Sent to clown?
    <br>
    <input type='text' name='update'>
    <br>
    <input type='submit' name='giventoatpdate'>
    </form>
    ";
}

所有变量名称均正确且拼写正确。

select 语句也有效,已经测试过。我觉得这与空和数据库中的数据是日期有关。 2016年2月10日

最佳答案

您需要使用while循环:

while($row=$stmt->fetch(PDO::FETCH_ASSOC)){

    if (empty($row['giventoatpdate'])){
    ...
    }
    else{
    ...
    }

}

并确保那些空行(如果为空...)确实是空的。

或者,正如 Luke 在评论中所述,不同的 PHP 版本可能 empty() 不同。

if ($row['giventoatpdate'] == ''){...}

或另一种选择:

if ($row['giventoatpdate'] != ''){...} // using a negation instead

while 循环内。

  • 重要提示:确保该列没有默认值。如果该默认值为 0NULL 或其他,那么这可能会影响您的查询,并且永远不会被视为空。

  • 另一个要检查的问题是您的 UPDATE 是否没有引入任何空格。如果该列包含空格,则也将被视为“非空”。这也是经过测试的事实。

<小时/>

编辑:

测试后,您的查询可能会失败,因为您使用 SELECT * 选择所有列,而不是 giventoatpdate 列本身。

这是因为还有其他列不为空。

因此,您可能只需要在查询中选择列本身:

SELECT giventoatpdate FROM orders

但是,请确保您选择了正确的列。

注意我刚刚用SELECT *做了另一次测试,它也有效,所以你可以忽略我的上述理论,但不能完全将其排除在外。

关于php EMPTY 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35160836/

相关文章:

php - 使用 currancy 格式的字段将 CSV 导入 MYSQL

mysql - 使用 PHP 在 MySQL 数据库中插入表情符号 - 智能手机?

mysql - 通过 Play 使用 ScalaAnorm 访问多个数据库

php - 向自定义 WordPress 数据库表中的文本字段添加新行,而不覆盖现有值

mysql - LIMIT 按 GROUPED 字段而不是返回的所有行

MySQL慢查询日志——慢到什么程度才算慢?

php - 使用 PHP、JS、CSS 和 HTML 创建类似跳棋的实时 Web 应用程序?

php - 麻烦整合 Paypal 信用卡支付

php - 从 WSO2 API 管理器 ISSUE 调用带有 .php 的 API 名称

php - Laravel 5 : assertSeeText() and html entities