- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我第一次尝试在 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/
编辑 1 我尝试创建并使用系统 DSN。我按照下面类似的步骤进行了成功的连接尝试。然后我修改了连接字符串以引用这个新的 DSN。我收到错误指定的 DSN 包含驱动程序和应用程序之间的架构不匹配。 为了
编辑 1 我尝试创建和使用系统 DSN。我按照以下类似步骤进行了成功的连接尝试。然后我修改了我的连接字符串以引用这个新的 DSN。我收到错误消息The specified DSN contains a
有人可以帮我解决这个问题吗?我需要通过系统 DSN 检查我与 AS400 服务器的 ODBC 连接,如果不存在特定的系统 DSN,则创建一个系统 DSN。我试过谷歌搜索,但没能找到对我有好处的东西。
我正在托管环境中编写一个小型 ASP.NET 应用程序(这意味着我不拥有该服务器)。 使用托管提供商的 webtools,我创建了一个指定驱动程序、服务器、UID、PWD 和数据库的 DSN。当我测试
有一段时间,我一直在尝试让一个 visual basic 6 应用程序在 Windows 7 中运行。最后一个问题是它在启动时找不到 DSN。凭直觉,我删除了系统 DSN 并以完全相同的方式创建它,但
在 AX2012 中,我想建立一个到 SQL Server 2008R2 的 ODBC 数据库连接。为此,我构建了 32 位系统 DSN“SQL Server Native Client 10.0”(
我有一个 SQL 数据库,并希望使用 VBA 连接到它以支持某些旧功能。我正在使用 ADODB 连接并且需要知道我的数据库 DSN 是什么。我怎样才能找到这个? 我正在使用 SQL Server 20
我从System32加载odbccp32.dll,甚至尝试从SysWow64使用。我使用SQLConfigDataSource函数为指定的驱动程序配置系统DSN。此功能可以成功配置32位驱动程序,但对
所以我创建了以下 docker-compose.yml 文件 web: build: ./config/apache volumes: - ./code:/var/ww
我有一个使用链接的 sql server 表作为数据源的 Access 表单。我需要尽快将此文件分发给其他用户,并且我需要一种方法来以编程方式将 DSN 安装到他们的机器上。这是手动设置链接的过程:
当尝试配置 symfony Messenger 时总是出现错误 No transport supports the given Messenger DSN "doctrine://default".
下面是在 VBA 应用程序中填充列表框的代码: Private Sub Form_Open(Cancel As Integer) ''#Populate list box control. D
PHP PDO 使用这种风格: MySQL mysql:host=hostname;dbname=databasename 在各自单独的参数中使用用户名和密码 PostgreSQL pgsql:hos
我有一个 Excel 应用程序,我想在其中向用户显示数据源名称(即 DSN)的列表,以便她/他可以选择要使用的数据源。 希望一旦获得列表,我就可以轻松访问 DSN 属性以连接到适当的数据库。 请注意,
PHP PDO 使用这种风格: MySQL mysql:host=hostname;dbname=databasename 在各自单独的参数中使用用户名和密码 PostgreSQL pgsql:hos
PDO DSN 的官方文档页面尚未列出用户名或密码。这些键值对的正确名称是什么? 最佳答案 看起来文档还没有更新,但是this is the related change来自 PHP 的源存储库,说明
我们有一个 ASP.NET 网站,该网站使用我们希望能够使用连接字符串访问的数据库。我们已经成功设置了一个 DSN 来连接到该数据库,但我似乎无法发现连接字符串的正确魔力。 有没有一种简单的方法可以将
我正在尝试在运行时创建一个 ACCESS DB,并使用以下代码在 ODBC.ini 中注册为 DSN: BOOL fCreated; fCreated = SQLConfigDataSource(N
我遇到了这个错误: The specified DSN contains an architecture mismatch between the Driver and Application 尝试使
我第一次尝试在 PHP 中使用异常,但进展不太顺利。 我有一个名为dsn的变量,它包含PDO/MySQL的连接字符串。 当我在 dsn 上使用 var_dump 时,它返回“null”,因此我可以假设
我是一名优秀的程序员,十分优秀!