PHP认为我的非空DSN == null(PHP thinks my non

编程入门 行业动态 更新时间:2024-10-27 20:25:39
PHP认为我的非空DSN == null(PHP thinks my non-empty DSN == null)

我第一次尝试在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(); } ?>

我希望你们能找到错误来帮助我。

I try to play with exceptions in PHP for my first time, but it does not go very well.

I have a variable named dsn, this contains the connection string of PDO / MySQL.

When I use var_dump on dsn it returns 'null', so i can assume that my dsn is empty.

But when I look in my code, the value of DSN is checked and when it equals to NULL it should throw an exception.

But, PHP does not throw an exception.

I already have checked for a typo, but dns does not exist in my code ;)

And due to this, I also can't connect to my database because I give PDO an empty DSN-string.

My code:

<?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(); } ?>

I hope you guys can find the error to help me.

最满意答案

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"); }

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

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

should be

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

what you have is "=" instead of "=="

更多推荐

本文发布于:2023-08-07 19:47:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1465675.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:DSN   PHP   thinks   null

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!