gpt4 book ai didi

PHP 认为我的非空 DSN == null

转载 作者:行者123 更新时间:2023-11-29 11:06:04 27 4
gpt4 key购买 nike

我第一次尝试在 PHP 中使用异常,但进展不太顺利。

我有一个名为dsn的变量,它包含PDO/MySQL的连接字符串。

当我在 dsn 上使用 var_dump 时,它返回“null”,因此我可以假设我的 dsn 为空。

但是当我查看代码时,会检查 DSN 的值,当它等于 NULL 时,它应该抛出异常。

但是,PHP 不会抛出异常。

我已经检查过拼写错误,但我的代码中不存在 dns ;)

因此,我也无法连接到我的数据库,因为我给 PDO 提供了一个空的 DSN 字符串。

我的代码:

<?php
try {
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'pridec';
$charset = 'utf8';

if ($host == NULL) {
throw new Exception("Hostname is empty or is equal to null");
}
if ($user == NULL) {
throw new Exception("Username is empty or is equal to null");
}
if ($db == NULL) {
throw new Exception("Database is empty or is equal to null");
}
if ($charset == NULL) {
throw new Exception("Charset is empty or is equal to null");
}
//Neither of these variables are working
//$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
//$dsn = "mysql:dbname=$db;host=$host;charset=$charset";
$dsn = "mysql:dbname=$db";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];


if ($dsn = NULL) {
throw new Exception("DSN can *never* be empty or equal to null / zero");
}

try {
$pdo = new PDO($dsn, $user, $pass, $opt);
} catch (PDOException $pdoe) {
echo "<pre>";
var_dump($dsn);
var_dump($pdoe);
echo "</pre>";
throw new Exception("Cannot connect to the database because: ".$pdoe->getMessage());
}

require "classes/account.class.php";
$account = new account($pdo);
} catch (Exception $e) {
echo "An error occured:<br>";
echo $e->getMessage();
} finally {
ini_set("session.hash_function","sha512");
session_start();
}
?>

希望大家能找到错误来帮助我。

最佳答案

if ($dsn = NULL) {
throw new Exception("DSN can *never* be empty or equal to null / zero");
}

应该是

if ($dsn == NULL) {
throw new Exception("DSN can *never* be empty or equal to null / zero");
}

你所拥有的是“=”而不是“==”

关于PHP 认为我的非空 DSN == null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41386192/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com