[英]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.