PHP 致命错误:在非对象上调用成员函数 Execute() [关闭]

2023-12-05

当我执行此代码时,出现错误“PHP 致命错误:在非对象上调用成员函数 Execute()”。导致此错误的行是第 96 行: $ok = $DB->Execute($sql, $aWhereParams);我试图解决这个问题,但没有成功。代码可能不返回对象?我怎样才能捕获这个错误或者我的代码有问题?请帮忙。谢谢!

SykWitIt

<?php

include_once 'config.php';
include_once('/apps/geoservices/apps/geoservices2.4/config/settings.php');
include_once('/apps/geoservices/apps/geoservices2.4/htdocs/utils.php');

if ($argc < 2)
{
    echo "Usage: php daemon.php <samba share>\n";
    exit(1);
}
elseif (is_dir($argv[1]))
{
    global $base;
    $base = $argv[1];

    // Dir_walk recursively walks to the root directory and all the subdirectory's
    dir_walk('handleFile', $argv[1], array('xml'), true, '', $argv[1]);
}
else
{
    echo "The parameter given for the samba share is not a directory.\n";
    exit(1);
}

function handleFile($base, $dir, $filehandle)
{
    //Get the application name
    $application_name = substr($dir, 0, -1);
    $application_name = strtolower(str_replace('\\', '_', $application_name)."_".substr($filehandle, 0, strrpos($filehandle, '.')));


    // Set the parameters needed to insert the WMC into the database
    $aWhereParams = array();

    $file = $base.$dir.$filehandle;
    $aWhereParams['appname'] = strtolower($application_name);
    $aWhereParams['password'] = generatePassword();
    $aWhereParams['wmctitle'] = null;
    $aWhereParams['folder'] = null;
    $aWhereParams['startwmc'] = 'Y';
    $aWhereParams['userid'] = null;

    $DB = createDatabaseConnection($dbconnect, $dbuser, $dbpasswd);

    if ($aWhereParams['folder'] !== null) 
    {
        // check if folder is already created
        $sql = "SELECT FOLDERID FROM WMCFOLDERS WHERE FOLDERTITLE = :folder AND APPLICATION=:appname";
        $ok = $DB->Execute($sql, $aWhereParams);
        if ($ok) 
        {
            $myArray = $ok->GetArray();
            if (empty($myArray)) 
            {
                // insert the folder into WMCFOLDERS
                createWMCDirectory($DB, $aWhereParams);
            } 
            else 
            {
                foreach ($myArray as $row) 
                {
                    $aWhereParams['folderid'] = $row['FOLDERID'];
                }
            }
        }
    } 
    else 
    {
        $aWhereParams['folderid'] = null;
    }

    $folderIdValue;
    if ($aWhereParams['folderid'] === null) 
    {
        $folderIdValue = 'IS NULL';
    } 
    else 
    {
        $folderIdValue = '='.$aWhereParams['folderid'];
    }

    $titleValue;
    if ($aWhereParams['wmctitle'] === null) 
    {
        $titleValue = 'IS NULL';
    } 
    else 
    {
        $titleValue = '='.$DB->qstr($aWhereParams['wmctitle'], get_magic_quotes_gpc());
    }

    // check if there is an existing entry, if so update it
    $sql = "SELECT APPLICATION FROM WMC WHERE STARTWMC=:startwmc AND APPLICATION=:appname AND FOLDERID ".$folderIdValue." AND TITLE ".$titleValue;
    $ok = $DB->Execute($sql, $aWhereParams);
    if ($ok) 
    {
        $myArray = $ok->GetArray();
        if (empty($myArray)) 
        {   
            // we need to insert a new entry
            $sql = "insert into WMC (USERID, APPLICATION, FOLDERID, TITLE, STARTWMC, WMC) values (null, :appname, :folderid, :wmctitle, :startwmc, null)";

            // Combine WMC name with the password for the new entry
            $aWhereParams['appname'] .= $aWhereParams['password'];

            $ok = $DB->Execute($sql, $aWhereParams);
            if (!$ok) 
            {
                handleDBError($DB);
            }

            insertCLOB($DB, $file, $aWhereParams['appname'], $aWhereParams['folderid'] , $aWhereParams['wmctitle']);

            foreach ($GLOBALS['emailadresses'] as $dienst => $emailaddress)
            {
                if ($dienst == $aWhereParams['appname'])
                {
                    // Set the email properties
                    $to = $emailaddress;
                    $subject = "Nieuwe WMC toegevoegd";
                    $message = "Er is een nieuwe WMC toegevoegd. Je kunt deze bekijken door naar het adres ".getURL()." te gaan en in te loggen met \n";
                    $message .= "gebruikersnaam: ".$aWhereParams['appname'];
                    $message .= "wachtwoord: ".$aWhereParams['password'];

                    $from = "te[email protected]";
                    $headers = "From:".$from;

                    // Combine all property's and send the email
                    mail($to, $subject, $message, $headers);
                }
            }
        } 
        else 
        {
            insertCLOB($DB, $file, $aWhereParams['appname'], $aWhereParams['folderid'] , $aWhereParams['wmctitle']);

            foreach ($GLOBALS['emailadresses'] as $dienst => $emailaddress)
            {
                if ($dienst == $aWhereParams['appname'])
                {
                    // Set the email properties
                    $to = $emailaddress;
                    $subject = "Nieuwe WMC toegevoegd";
                    $message = "Er is een nieuwe WMC toegevoegd. Je kunt deze bekijken door naar het adres ".getURL()." te gaan.";

                    $from = "[email protected]";
                    $headers = "From:".$from;

                    // Combine all property's and send the email
                    mail($to, $subject, $message, $headers);
                }
            }
        }
    } 
    else 
    {
        handleDBError($DB);
    }

    echo "WMC '".$aWhereParams['wmctitle']."' loaded OK in folder '".$aWhereParams['folder']."'\n";
    echo "    for ".$aWhereParams['appname'].", $dbuser@$dbconnect\n";
}

// Generate a random password
function generatePassword()
{
    $length = 8;

    $password = "";
    $possible = "2346789bcdfghjkmnpqrtvwxyzBCDFGHJKLMNPQRTVWXYZ";

    $maxlength = strlen($possible);

    if ($length > $maxlength)
        $length = $maxlength;

    $i = 0; 
    while ($i < $length) 
    { 
      $char = substr($possible, mt_rand(0, $maxlength-1), 1);

      if (!strstr($password, $char)) 
      { 
        $password .= $char;
        $i++;
      }
    }

    return $password;
}

function getURL()
{
    //This will be URL
    return gethostname()."/apps/geoservices/";
}

function dir_walk($callback, $dir, $types = null, $recursive = false, $baseDir = '', $base)
{
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false)
        {
            if ($file === '.' || $file === '..')
            {
                continue;
            }
            if (is_file($dir . $file))
            {
                if (is_array($types))
                {
                    if (!in_array(strtolower(pathinfo($dir . $file, PATHINFO_EXTENSION)), $types, true))
                    {
                        continue;
                    }
                }
                $callback($base, $baseDir, $file);
            }
            elseif($recursive && is_dir($dir . $file))
            {
                dir_walk($callback, $dir . $file . DIRECTORY_SEPARATOR, $types, $recursive, $baseDir . $file . DIRECTORY_SEPARATOR, $base);
            }
        }
        closedir($dh);
    }
}
?>

该函数根据给定的连接字符串、用户和密码创建 Oracle 数据库连接


function createDatabaseConnection($dbconnect, $dbuser, $dbpasswd)
{
  // we need adodb
  require_once('/usr/share/php/adodb/adodb.inc.php');

  // make sure that the OCI extension is loaded
  $szOCIModule = "php_oci8";
  if (!extension_loaded("oci8"))
      dl($szOCIModule . "." . PHP_SHLIB_SUFFIX);

   $DB = NewADOConnection('oci8');
   $DB->PConnect($dbconnect, $dbuser, $dbpasswd);
   if (!$DB) return false;
   if (!$DB->IsConnected()) return false;
   return $DB;
}
  

从该函数可以看出,它很可能返回 false。

如果你这样做会发生什么var_dump($DB)就在该行之后$DB = createDatabaseConnection(...);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 致命错误:在非对象上调用成员函数 Execute() [关闭] 的相关文章

  • SQLite适合并发读吗?

    在没有锁定的情况下 SQLite 数据库的性能是否能达到每秒 50 次读取左右 我正在尝试确定它是否可以在不会经常 写入 的 PHP 网站上使用 它主要是从一小部分表中读取相同的数据 没问题 并发读 写实际上会被 SQLite 序列化 所以
  • PHP 中的随机排列对象

    如何在 PHP 中对对象进行排序 我试过shuffle 但这需要一个数组 Warning shuffle expects parameter 1 to be array object given in var www index php o
  • 构建、部署、配置和回滚所需的 Jenkins 指南,保留 5 个版本

    我对詹金斯很陌生 有一定的了解 但需要进一步的指导 我在 Git 存储库上有一个 PHP 应用程序 它使用 Composer 具有资产 具有用户上传的媒体文件 使用 Memcache Redis 具有一些代理 工作人员 并且具有迁移文件 到
  • 上传并 POST 文件到 PHP 页面

    我需要一种上传文件并将其 POST 到 php 页面的方法 php 位于 apache 服务器上 我在我的桌面应用程序中使用这个 C 代码 这是一个c代码的套接字 当我执行程序时 可以得到 文件大小为772906 打开服务器正常 文件大小为
  • 我怎样才能让我的卷发在刮擦之前等待几秒钟?

    所以我试图从网站上抓取一些数据 有一些必须被删除的名字列表 发生的情况是 如果有 15 个名字需要被删除 其中只有 5 个名字被删除 当我检查原始站点时 他们也以类似的方式加载数据 第一次加载网站时 仅显示五个名字 重新加载时会显示 10
  • 禁用 php 文件缓存以进行调试

    我有一个安装了 zpanel 和 apache2 php mysql 的 vps 我正在为 php 网站开发一个小型后端 对于准备发布的网站来说情况是完美的 但现在我需要禁用缓存 php 文件的服务器功能以立即测试我的 php 文件的正确性
  • PHP 中的变量 $this 意味着什么?

    我看到变量 this一直用PHP 但我不知道它有什么用 我个人从未使用过它 有人可以告诉我变量如何 this在 PHP 中工作吗 它是对当前对象的引用 最常用于面向对象的代码中 参考 http www php net manual en l
  • 我可以为我的记录器使用静态类吗?

    最近我被告知静态类 方法是邪恶的 以我的 Logger 类为例 class Logger private static logs array public static function add msg self logs msg publ
  • php登录会话登录变量

    我正在学习 php 并已报名参加课程 我的用户登录信息显示如下 我的问题是登录时是否必须在会话中选择我想要的所有字段 我不能只使用 选择电子邮件 并按此拉出所有行 或者我必须在登录时选择所有行吗 例如 将该 uid uid 用于该会话 它是
  • 如何在 dompdf 库上启用调试?

    我正在使用 dompdf 库来输出一些报告 我得到了一个文件输出 但我有一些奇怪的行为 如何启用调试报告dompdf https github com dompdf dompdf dompdf new Dompdf something li
  • Laravel Factory:手动增量列

    对于以下工厂定义 该列order需要按顺序进行 已经有专栏了id即自动递增 第一行的order应该开始于1以及每个附加行的order应该是下一个数字 1 2 3 etc factory gt define App AliasCommand
  • 如何使用 DbSession 在 Yii2 中创建用户会话管理系统 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 今天 当我想为我的网站创建用户个人资料页面并希望创建系统用户可以管理他在此系统中的活动会话时 需要 查看活动会话 浏览器和平台 查看当
  • POST 数据加密 - HTTPS 足够吗?

    考虑一个场景 其中用户身份验证 用户名和密码 由用户在页面的表单元素中输入 然后提交 POST 数据通过 HTTPS 发送到新页面 其中 php 代码将检查凭据 现在 如果黑客位于网络中 并说可以访问所有流量 那么在这种情况下应用程序层安全
  • 更新 Composer 依赖项时 Artisan 命令出错

    我正在为 Laravel 开发一个库 其中包含一个服务提供者 我已将此库添加到另一个项目的composer json file The composer json 主项目 的文件包含以下脚本 scripts post root packag
  • WordPress 中的多词搜索不显示搜索结果

    我自定义了一个主题 但在使用多词查询的搜索结果时遇到一些问题 网站上线时间为www aetterworldbydesign com http abetterworldbydesign com 搜索单个单词 http www abetterw
  • YouTube API 观看私人视频

    我有一个具有草稿模式的网站 有人可以登录并查看该网站的外观 以便在公众看到该网站之前批准该网站 我在一个帐户上有一些 YouTube 视频 但我将其设为私人帐户 因为我不想让全世界看到它们 不过 我确实希望登录草稿模式的人能够观看私人嵌入内
  • 如何获得DiVs等级?

    html div class div class p strong span style color FF0000 Content1 span strong p p style text align center Content2 img
  • PayPal REST API:通过重定向 URL 或 Webhook 调用履行订单/付款?

    我正在致力于将 PayPal REST API 集成到我的 Symfony 2 Web 应用程序中 我不确定完成订单 付款的正确时间 地点 与金额 客户数据等其他参数一起 我将两个 URL 传输到 PayPal API 一个是接受付款时用户
  • 重定向至 2 页

    我有一个 PHP 页面 我想先将其重定向到一个页面 例如 google com 然后再重定向到另一个页面 例如 bing com 为此 我使用以下方法 header Location http google com header Locat
  • php SimpleXML 属性丢失

    我这里有以下 xml 文档 编辑 示例见下文 我正在使用 php SimpleXML 将其转换为对象来读取它 xmlContent file get contents path test xml tablesRaw new SimpleXM

随机推荐

  • 在 Python 中保存 Outlook 消息文件 (.msg)(包括附件)?

    我需要将 Outlook 邮件及其附件保存在 Python 的 msg 文件中 目前正在与win32com client I use message SaveAs path name 这给了我一个不错的 msg 文件 但不包括附件 如果附件
  • 如何忽略 Perl 的 readdir 中的单点和双点条目?

    从这里跟进 Perl Imgsize 不在循环中工作 我还有另一个问题 当 perl 读取目录中的文件时 如何不让 perl 列出单点和双点条目 正如上面链接的问题一样 我对 while 循环的输出 while file readdir d
  • 按与填充的关联性排序

    我有通过一对多关联链接的文章和评论 一篇文章可以有许多评论 我想获得评论最多的文章 所以我这样做 function mostCommentedArticles var deferred Q defer Article find popula
  • 如何使用 csv DictWriter 将列表中的信息写入 csv 文件?

    使用csv模块 我一直在尝试将信息从列表传递 写入到 csv 文件中python使用字典编写器 我收到一个奇怪的错误 女巫将在实际代码下 我想知道代码中的错误是什么 以及我们如何修复它 import csv names kisha smit
  • NSURL 对于有效 URL 返回 nil

    我有一个有效的谷歌地图网址 如果您在浏览器中运行该网址 则会显示地图图像 然而 当我将它放入我的 Swift 代码中并尝试从 String 创建 NSURL 时 它返回 nil let urlString https maps google
  • 获取 AppointmentItem 的日历所有者电子邮件地址

    我正在开发一个 Outlook 加载项以将所有约会发送到 Web 应用程序 但在持续获取 AppointmentItem 的 所有者 而不是组织者 时遇到了一些问题 例如 X 向 Y 和 Z 发送约会 加载项将从其中获取三个约会项目 我正在
  • 如何从java程序(即以编程方式)将用户输入发送到终端?

    我正在从 java 程序执行命令 例如 Process myProcess Runtime getRuntime exec sudo cat etc sudoers It asks for password so I send passwo
  • 为什么在分组 data.table 内的 lm 上使用 update 会丢失其模型数据?

    好吧 这很奇怪 我怀疑这是内部的错误data table 但如果有人能解释为什么会发生这种情况 那将会很有用 这是什么update究竟在做什么 我正在使用list list 里面的诡计data table存储已安装的模型 当您创建一个序列时
  • 是否可以将全局第三方类扩展为 Next.js 中的 CSS 模块?

    我正在使用 Next js 和 CSS 模块 现在在 app js我正在导入一个全局 scss 文件 如下所示 import public scss style scss 在这个文件中 我导入了 Bootstrap import node
  • 在 gridview 中冻结标题时正确设置标题宽度和列

    我想要一个带有固定 header 的 gridview 我试过这个link and this 我一直都能做到这一点 但存在网格标题宽度和列宽度设置不相等的问题 所以它看起来不太好 但滚动和冻结确实可以正常工作 如果我不使用冻结逻辑 则标题宽
  • Javascript 事件在平板电脑上不起作用?

    我在 ASP NET 3 5 中开发了一个 Web 应用程序 它消耗了大量的 javascript JQuery 事件 并且在 PC 的普通浏览器中正常工作 但我的客户说这些在tablet pc android 和 iPad 中不起作用 就
  • Jquery Mobile:多次更新表单

    好的 经过几个小时的困惑 我发现在 Jquery Mobile 元素上调用 page 只能工作一次 如果我想通过 AJAX 多次更新表单 该怎么办 update jQuery Mobile beta2 引入了create event tri
  • 如何模拟 do-while 循环?

    我需要在 Python 程序中模拟 do while 循环 不幸的是 下面的简单代码不起作用 list of ints 1 2 3 iterator list of ints iter element None while True if
  • 如何引用Microsoft.Office.Interop.Excel dll?

    我在 2006 年使用 MS VS 2005 开发了一个处理 Excel 表格的系统 现在 我无法在 MS VS 2012 中使用相同的参考 var app new Microsoft Office Interop Excel Applic
  • SQL删除清除表而不是出错

    我有一段 SQL 你会认为 无法编译 但它会从目标表中删除所有行 考虑这个设置 create table TableA ColumnA varchar 200 create table TableB ColumnB varchar 200
  • 如何创建复选框列表

    我正在尝试读取 xml 文件并填充QListWidget及其一些内容 每个条目都应该有一个复选框 在 Qt Designer 中 我创建了列表并添加了一个具有复选框的项目 方法是将项目添加到 listWidget 然后右键单击它并选择 编辑
  • SceneKit – 加载 HDR 或 EXR 光照环境没有效果

    我尝试加载 hdr文件以将其用作天空盒并使用其照明信息 这是我使用的代码 backgroundColor UIColor gray check if a default skybox is added let environment UII
  • 以编程方式删除 Lotus Notes 设计元素继承

    作为创建基本修订控制系统的一部分 我想以编程方式禁用 Lotus Notes 模板上的设计元素级别继承 到目前为止我已经尝试过以下方法 DXL 导出 ForceNoteFormat true XSLT 由于导入器中字段 上的验证问题而失败
  • 通过chrome扩展获取下载文件的绝对路径

    我正在开发一个 chrome 扩展 它可以从网页下载特定文件 我有一个 popup html 通过它我可以输入要下载的文件的名称 还有一个链接 历史记录 单击该链接我想打开一个新页面 其中包含指向以前下载的文件的链接 下载历史记录 我可以下
  • PHP 致命错误:在非对象上调用成员函数 Execute() [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 当我执行此代码时 出现错误 PHP 致命错误 在非对象