gpt4 book ai didi

PHP PDO 错误范围?

转载 作者:可可西里 更新时间:2023-11-01 08:47:52 25 4
gpt4 key购买 nike

我一直在搜索和测试不同的方法来解决我的问题,但我仍然找不到该死的解决方案。我是 PHP 的新手,我正在尝试自学使用 PDO。

db.php:

<?php

$dsn = 'mysql:myHost=localhost;dbname=ewt';
$user= 'root';
$pass = '';

try {
$pdo = new PDO($dsn, $user, $pass);
$pdo ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

showCust.php

<?php

include_once('db.php');

try {


$sql = "SELECT * FROM PERSOON";
$result = $pdo->query($sql);
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
echo $row['VOORNAAM']. ' - '. $row['NAAM']. ' - '. $row['EMAIL']. ' - '. $row['ADRES']. '<br />';
}
$pdo = null;
}
catch(PDOException $e) {
echo $e->getMessage();
}

当我在 showCust.php 中复制 db.php 代码时,它工作得很好,但我想从每个其他文件中分离数据库连接。我知道它必须在 $pdo 的范围内做一些事情,但我就是想不通......

我不断收到的错误是:

Notice: Undefined variable: pdo ... line 9

Fatal error: Call to a member function query() on a non-object in ... line 9

我知道数据库没有密码。这纯粹是为了测试目的。

提前致谢!

最佳答案

本质上,PHP 中的*_once 函数不过是一个肮脏的把戏。帮助毫无戒心的程序员保持代码井然有序的拐杖。但没有什么是免费的。

这种“一次”行为意味着您确实在运行此函数一次。
意味着如果您已经包含它一次,所有后续调用都将执行...什么都不做。

因此,如果您在代码的前面对 db.php 使用了 include_once,并且它在一个函数内部,那么 $pdo 变量仍然是该函数的局部变量,而没有 $pdo 变量的全局作用域。下次包含时,db.php 没有执行,因此您根本没有 $pdo。
然而,这只是一个推测。

其他原因可能是各种拼写错误。还要确保您运行的代码与您在此处发布的代码完全相同。您会惊讶于它的完美运行

关于PHP PDO 错误范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990867/

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