用于 PHP 8.2 的过程性 MySQL 改进驱动程序类文件 -- 来自查询的堆栈跟踪错误并且不起作用

Procedural MySQL Improved Driver Class File For PHP 8.2 -- Stack Trace Errors From Queries and Does NOT Work

提问人:Gcnord1008 提问时间:11/3/2023 最后编辑:Gcnord1008 更新时间:11/3/2023 访问量:86

问:

用于 PHP 8.2 的过程性 MySQL 改进驱动程序类文件 -- 来自查询的堆栈跟踪错误并且不起作用

我为 PHP 8.2 编写了一个面向对象的 MySQL 改进驱动程序类文件的过程。我正在转换和更新我的软件项目 Web 应用程序中所有 125,000 行纯 PHP 编程代码。在过去的 2 年里,我断断续续地更新和重写了其中的所有编程代码。我能够在 PHP 5.6 上让它 100% 正常运行,并在此过程中添加了大约 1,000+ 个新功能。它几乎可以完成 Facebook 和 Twitter 所做的一切,所以我对结果非常满意,但我需要它在 PHP 8.2 上运行,然后在明年发布时在 PHP 9 上运行。

我切换到 PHP 8.2,我能够通过将 SQL 语句更改为过程 MySQLi 来使其工作。我将我编写的内核文件中的所有 SQL 语句更改为 mysqli_connect();, mysqli_select_db();, mysqli_query();等等,我能够让内核加载 Web 应用程序的主要部分。如果我继续将所有 SQL 语句转换为过程 MySQLI 语句,整个事情都会起作用,但我不想这样做。相反,我想创建一个新的类文件以用于MySQL Improved,我做到了,但我似乎无法让它工作。我尝试了所有不同的组合来让它工作。但这行不通。

这是一个粘贴链接,指向我为与MySQL一起使用而编写的类文件的源代码 改进:

  • 帕斯特宾。com/raw/Tzu7tVhp

这是一个指向应用程序面板源代码的粘贴链接,该面板使用过程到面向对象的语句,用于 MySQL Improved 和 PHP 8.2 - 它与我编写的用于 PHP 5.6 和旧的 MySQL 标准驱动程序的类文件基本相同,并且具有 100% 的功能, 但这个没有:

  • 帕斯特宾。com/raw/DxCa0BTa

这是内核文件源代码 - Cerberus.php 的粘贴链接:

  • 控制 c .com/13f40c4f/fullscreen.php?hash=158375a54da9516c4215fb852e8c1b1a&toolbar=true&linenum=false

这篇文章的附件是我从 MySQL 上得到的错误的屏幕截图 在 PHP 版本 8.2 上进行了改进

它根本不起作用。

这是它在 PHP 5.6 上 100% 功能的外观图片,在此处输入图像描述

这是 PHP 8.2 上的错误图片,请在此处输入图像描述

来自应用程序面板的错误消息:

“应用程序”面板

Fatal error: Uncaught Error: Object of class mysqli could not be converted to string in /storage/ssd4/512/21484512/public_html/Cerberus/Applications/Panel/Applications_Panel.panel:58 
Stack trace:
 #0 /storage/ssd4/512/21484512/public_html/Cerberus/Cerberus.php(5010): include_once()
 #1 {main} thrown in /storage/ssd4/512/21484512/public_html/Cerberus/Applications/Panel/Applications_Panel.panel on line 58
php mysql mysqli php-8.2

评论

1赞 Barmar 11/3/2023
参数必须是文件名。但是你在那里使用了一个对象,这没有意义。如果从数据库查询中获取文件名,则忘记使用函数来获取结果。include_once()mysqlifetch_XXX
2赞 Barmar 11/3/2023
顺便说一句,如果您要重新编码,则比 .PDOmysqli
2赞 KIKO Software 11/3/2023
Facebook 和 Twitter 并不是那么棒。正是用户数量使他们与众不同。90%的编码用于跟踪/分析用户和广告平台。
2赞 Barmar 11/3/2023
我们无法在此处为您调试代码。
3赞 KIKO Software 11/3/2023
你这么说很有趣。PDO的目标之一就是这样做:“PDO提供了一个数据访问抽象层,这意味着,无论你使用哪个数据库,你都可以使用相同的函数来发出查询和获取数据。但你是对的,新东西总是伴随着很多你意想不到的令人讨厌的变化。

答:

0赞 Adi 11/3/2023 #1

所以我相信是 query() 和 fetch_array() 中的引号给出了问题,基本上是它试图连接对象,你能试试吗

$_Application_Module_Panel_Application_Links_DB_Query_SELECT_APPLICATION_LINKS = $DB->query(
    $_GLOBAL_SQL_DATABASE_SERVER_CONNECTION, 
    "SELECT * FROM {$_ACCESS_DATABASE_SERVER_DATABASE_TABLE_PREFIX}_application_links ORDER BY application_link_row ASC"
);

while ($_Application_Module_Panel_Application_Links_DB_Query_SELECT_APPLICATION_LINKS_Fetch_Array = $DB->fetch_array(
    $_GLOBAL_SQL_DATABASE_SERVER_CONNECTION, 
    $_Application_Module_Panel_Application_Links_DB_Query_SELECT_APPLICATION_LINKS, 
    MYSQLI_BOTH
)) {
    $_Application_Module_Panel_Application_Links_LIST_APPLICATION_LINK_NAME = $_Application_Module_Panel_Application_Links_DB_Query_SELECT_APPLICATION_LINKS_Fetch_Array['application_link_name'];
    $_Application_Module_Panel_Application_Links_LIST_APPLICATION_LINK_URL = $_Application_Module_Panel_Application_Links_DB_Query_SELECT_APPLICATION_LINKS_Fetch_Array['application_link_url'];

    echo ("<BIG><B>&middot;</B></BIG>&nbsp;<A HREF=\"$_Application_Module_Panel_Application_Links_LIST_APPLICATION_LINK_URL&amp;$_GLOBAL_SYSTEM_SECURITY_CACHE_CIRCUMVENTION_HTR_RANDOM_STRING_GENERATION\" TITLE=\":: Open & Display The Application Module :: $_Application_Module_Panel_Application_Links_LIST_APPLICATION_LINK_NAME ::\">$_Application_Module_Panel_Application_Links_LIST_APPLICATION_LINK_NAME</A><BR>");
}

$DB->free($_Application_Module_Panel_Application_Links_DB_Query_SELECT_APPLICATION_LINKS);

希望这会有所帮助