繁体   English   中英

当检查数据库查询是否成功时,为什么还要同时检查值和类型?

[英]Why do we check both the value and type when check if a database query was successful?

在w3schools上学习MySQL和PHP时,在有关插入数据的页面上遇到了这个问题。

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?> 

当检查查询是否成功时,为什么我们要检查两个类型是否相同? 就是这样还好吗?

if ($conn->query($sql) == TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

mysqli::query()在失败时返回false,另一个结果将永远不是false。 如果您不需要对mysqli_result使用特殊的逻辑,则可以不等于true来编写。 docs

if ($conn->query($sql)) 
{
  //
} else 
{
  //
}

Php支持真实性,如果该函数返回1,那么它将为真。 它明确检查结果是否为布尔TRUE。

您无需在这种情况下检查类型,只需输入以下内容即可:

if ($conn->query($sql) == TRUE) {

作者可能正在使用一种防御性编程技术,该技术可以准确验证您的期望。

根据: http : //php.net/manual/en/mysqli.query.php
如果这是“ SELECT,SHOW,DESCRIBE或EXPLAIN”,那么您将获得一个对象。 如果有人将查询更新为意外情况,他们将遇到错误情况并知道自己做错了什么。 这个特殊的场景有些麻烦,因为它是示例代码。 实际上,您可能需要进行测试才能进行真正的验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM