如果在 SELECT 查询后 SQL 中不存在行,如何显示错误消息?
How to show an error message if row is not present in SQL after a SELECT query?
我正在尝试 运行 SELECT * FROM <table> WHERE <param> = <value> LIMIT 1
SQL 查询与 MySQLi
我构建了这个代码片段,如果输入 ID 存在于 SQL 数据库中,它就可以完美运行。
$id = $_GET['id'];
// preparing and binding
$stmt = $conn->prepare("SELECT * FROM `testtable1` WHERE `userid` = ? LIMIT 1");
$stmt->bind_param("i", $id);
// setting parameters and execute
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
echo $row['email'] . '<br><br>';
我想知道的是,我如何知道数据库中是否存在输入 ID(与 URL 一起传递)NOT? 目前,如果数据库中存在 ID,则会显示 email
参数的值。但如果它不存在,则不会显示任何内容..
那么对于上面的代码,如何检查输入的 ID 是否正确 - 如果不正确我可以在那里显示 'Incorrect ID' 消息?
首先要记住的是,有效查询可以 return 空记录集。这意味着您不是在寻找错误,但可能会得到一个空结果。
一种方法是检查行数 returned
$id = $_GET['id'];
$stmt = $conn->prepare("SELECT *
FROM `testtable1`
WHERE `userid` = ?
LIMIT 1");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->store_result();
if ( $stmt->num_rows > 0 )
$result = $stmt->get_result();
$row = $result->fetch_assoc();
echo $row['email'] . '<br><br>';
} else {
//no rows returned id must not exist
echo 'That use does not exist';
}
PHP 像大多数编程语言一样,有一种称为 if
语句的语言结构。 if
语句需要一个布尔值,如果该值为真(或 true-ish),则执行以下代码块。
在 PHP 中,一个空数组被认为是 false-ish 因此您可以简单地执行以下操作来检查 SELECT
语句是否返回了任何值:
$stmt = $conn->prepare("SELECT * FROM `testtable1` WHERE `userid` = ? LIMIT 1");
$stmt->bind_param("i", $id);
// setting parameters and execute
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
if($row) {
echo $row['email'] . '<br><br>';
} else {
echo 'Incorrect ID - no value found in the database!';
}
如果if(condition)
中的条件为false-ish,则执行else块。如果 SQL 返回一个值,那么您将在 $row
中有一个 non-empty 数组,该数组的计算结果为真,并且将执行第一个代码块。
我正在尝试 运行 SELECT * FROM <table> WHERE <param> = <value> LIMIT 1
SQL 查询与 MySQLi
我构建了这个代码片段,如果输入 ID 存在于 SQL 数据库中,它就可以完美运行。
$id = $_GET['id'];
// preparing and binding
$stmt = $conn->prepare("SELECT * FROM `testtable1` WHERE `userid` = ? LIMIT 1");
$stmt->bind_param("i", $id);
// setting parameters and execute
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
echo $row['email'] . '<br><br>';
我想知道的是,我如何知道数据库中是否存在输入 ID(与 URL 一起传递)NOT? 目前,如果数据库中存在 ID,则会显示 email
参数的值。但如果它不存在,则不会显示任何内容..
那么对于上面的代码,如何检查输入的 ID 是否正确 - 如果不正确我可以在那里显示 'Incorrect ID' 消息?
首先要记住的是,有效查询可以 return 空记录集。这意味着您不是在寻找错误,但可能会得到一个空结果。
一种方法是检查行数 returned
$id = $_GET['id'];
$stmt = $conn->prepare("SELECT *
FROM `testtable1`
WHERE `userid` = ?
LIMIT 1");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->store_result();
if ( $stmt->num_rows > 0 )
$result = $stmt->get_result();
$row = $result->fetch_assoc();
echo $row['email'] . '<br><br>';
} else {
//no rows returned id must not exist
echo 'That use does not exist';
}
PHP 像大多数编程语言一样,有一种称为 if
语句的语言结构。 if
语句需要一个布尔值,如果该值为真(或 true-ish),则执行以下代码块。
在 PHP 中,一个空数组被认为是 false-ish 因此您可以简单地执行以下操作来检查 SELECT
语句是否返回了任何值:
$stmt = $conn->prepare("SELECT * FROM `testtable1` WHERE `userid` = ? LIMIT 1");
$stmt->bind_param("i", $id);
// setting parameters and execute
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
if($row) {
echo $row['email'] . '<br><br>';
} else {
echo 'Incorrect ID - no value found in the database!';
}
如果if(condition)
中的条件为false-ish,则执行else块。如果 SQL 返回一个值,那么您将在 $row
中有一个 non-empty 数组,该数组的计算结果为真,并且将执行第一个代码块。