MySQL 查询未显示任何结果

No Results showing from MySQL Query

我有一个 table 名为“repairs”。在 table 里面,我有以下几行:

job_number (INT11) AUTO INCREMENT -> 这是客户在我正在构建的维修状态表中输入的数字...

日期 | client_full_name | item_for_repair | tech_assigned | technician_notes | current_status

整个过程应该首先检查客户输入表格的工作编号是否在数据库中,并根据数据库中的内容显示该工作编号的状态。如果他们输入的职位编号在数据库中不存在,或者他们输入错误,系统会提示他们没有找到记录消息...

<?php

if (isset($_POST['btn_get_status'])) {
    // Connection code.
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $pdo = new \PDO('mysql:host=localhost;port=3306;dbname=ecemscoz_ecemsapp;charset=utf8mb4', 'ecemscoz_ecemsapp', 'C3m3t3ry!@', $options);

    // Prepared statement
    $stmt = $pdo->prepare('SELECT * FROM repairs WHERE job_number=?');
    $stmt->execute([$_POST['job_number']]);
    $exists = $stmt->fetchColumn(); // either 1 or null

    if ($exists) {
        echo "Status for $job_number is currently $current_status";
    } else {
        echo 'No Record Found';
    }
}

我现在面临的问题是,当我输入一个不在数据库中的数字时,它 returns else{ 未找到记录的语句....完美!

没有找到按预期工作的记录:

但是如果我输入一个确实存在的职位编号,它会在需要职位编号和当前状态的地方显示空白字段。

结果为空:

我真的很难理解我缺少什么或在哪里实施它。我的新 PDO 代码是改进还是变得更糟?

验证在查询本身中:

$stmt = $pdo->prepare('SELECT * FROM repairs WHERE job_number=?');

如果 returns 任何结果都存在。 您应该将 $exists = $stmt->fetchColumn(); 更改为 $exists = $stmt->fetch();

存在时将有两种可能的状态:1) 如果没有工作则为空数组。 2) 一个数组,其中所有行和列都与该作业编号匹配。 然后你可以做一些像

if (empty($exists)) {
    echo 'No Record Found';
} else {
    echo "Status for {$exists['job_number']} is currently {$exists['current_status']}";
}

正如@Dharman 所说,您可以反转 if:

if ($exists) {
    echo "Status for {$exists['job_number']} is currently {$exists['current_status']}";
} else {
    echo 'No Record Found';
}