gpt4 book ai didi

php - 在非对象上调用成员函数 rollback()

转载 作者:行者123 更新时间:2023-11-29 14:57:28 25 4
gpt4 key购买 nike

我在办公室运行本地主机 XAMPP 服务器用于测试目的。我正在旅行,决定在我的笔记本电脑上完成一些工作,因此我在我的笔记本电脑上安装了新版本的 XAMPP,复制了我的文件,但由于某种原因,我在我的笔记本电脑版本上遇到了不间断的错误,而我没有这样做我的桌面上没有一个。

其中最重要的一个是我的一个网站的简单登录页面。

每次我尝试运行代码时,都会收到以下错误:

Call to a member function rollback() on a non-object

我的代码是:

<?php
session_start();

if( $_SERVER['SERVER_PORT'] == 80) {
header('Location:https://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]);
die();
}

try
{
$db = new PDO('mysql:host=localhost;dbname=DB', 'USER', 'PW');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();

$sql = $db->prepare("SELECT user, pw FROM table WHERE user=? AND pw=?");
$sql->execute(array($_POST['user'], $_POST['pw']));
$foundrows = $db->query("SELECT FOUND_ROWS()")->fetchColumn();

$rows = $sql->fetchAll();

foreach($rows as $row) {
$username = $row[0];
$pw = $row[1];
}

$db->commit();
$db->NULL;
}

catch (PDOException $e)
{
$db->rollback();
echo $e->getMessage();
exit;
}


if ($foundrows == 1) {

(store stuff and exit to Page A)

} else {

(create error and return to login page)

}
?>

正如我之前所说,它在我的桌面上运行没有问题(以及我在其他地方使用的几个实时网站)。 H这是怎么回事?

注意:我认为这可能是我的 PHP 文件的不同配置,但我从桌面复制了 php.ini 文件,但仍然没有运气......

最佳答案

您的代码表明 $db->rollback() 失败,因为 $db 尚未定义。让我们看一下您的代码片段:

try
{
$db = new PDO('mysql:host=localhost;dbname=DB', 'USER', 'PW');
[snip]
}

catch (PDOException $e)
{
$db->rollback();
echo $e->getMessage();
exit;
}

我认为您的代码甚至没有超过 catch block 中的第一个语句,即 PDO 构造函数中抛出异常。要测试这一点,请将 echo $e->getMessage; 移至 $db->rollback() 上方,或有条件地进行回滚:

catch (PDOException $e)
{
if ($db) {
$db->rollback();
}
echo $e->getMessage();
exit;
}

要更普遍地解决此问题,请仔细检查您的数据库设置 - 也许从一台服务器移动到另一台服务器时出现错误?

关于php - 在非对象上调用成员函数 rollback(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4222557/

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