CodeIgniter 4 项目中未定义的常量“CodeIgniter\Database\MySQLi\MYSQLI_STORE_RESULT”

D.B*_*.B. 3 php mysqli codeigniter codeigniter-4

我已经使用 Composer 安装了 CodeIgniter 项目 (4.1.5)。我在 PHP 8.0.12 上运行它

\n

当我尝试与数据库通信时,出现内部服务器错误 500,日志消息如下:

\n
CRITICAL - 2021-11-13 01:39:18 --> Undefined constant "CodeIgniter\\Database\\MySQLi\\MYSQLI_STORE_RESULT"\n#0 D:\\Sites\\ea4\\vendor\\codeigniter4\\framework\\system\\Database\\Database.php(56): CodeIgniter\\Database\\Database->initDriver('MySQLi', 'CodeIgniter\\\\Dat...', Array)\n#1 D:\\Sites\\ea4\\vendor\\codeigniter4\\framework\\system\\Database\\Config.php(78): CodeIgniter\\Database\\Database->load(Array, 'default')\n#2 D:\\Sites\\ea4\\vendor\\codeigniter4\\framework\\system\\Model.php(97): CodeIgniter\\Database\\Config::connect('default')\n#3 D:\\Sites\\ea4\\app\\Controllers\\Backend\\Home.php(33): CodeIgniter\\Model->__construct()\n#4 D:\\Sites\\ea4\\vendor\\codeigniter4\\framework\\system\\CodeIgniter.php(824): App\\Controllers\\Backend\\Home->index()\n#5 D:\\Sites\\ea4\\vendor\\codeigniter4\\framework\\system\\CodeIgniter.php(410): CodeIgniter\\CodeIgniter->runController(Object(App\\Controllers\\Backend\\Home))\n#6 D:\\Sites\\ea4\\vendor\\codeigniter4\\framework\\system\\CodeIgniter.php(318): CodeIgniter\\CodeIgniter->handleRequest(NULL, Object(Config\\Cache), false)\n#7 D:\\Sites\\ea4\\public\\index.php(37): CodeIgniter\\CodeIgniter->run()\n
Run Code Online (Sandbox Code Playgroud)\n

在家庭控制器中,我有以下代码:

\n
public function index()\n{\n    $session = session();\n    $data = [];\n    // Check for post\n    if ($this->request->getMethod() === 'post') {\n        // Validate the user input\n        if (!($this->validate([\n            'cmsuserEmail'      => ['label' => 'E-Mail',                'rules'   => 'required|min_length[6]|max_length[50]|valid_email'],\n            'cmsuserPassword'   => ['label' => '\xce\x9a\xcf\x89\xce\xb4\xce\xb9\xce\xba\xcf\x8c\xcf\x82 \xcf\x80\xcf\x81\xcf\x8c\xcf\x83\xce\xb2\xce\xb1\xcf\x83\xce\xb7\xcf\x82',     'rules'   => 'required|min_length[8]|max_length[255]'],\n        ]))) {\n            // Validation has failed, redirect the user back\n            return redirect()->to(base_url() . '/Backend/Home/index')->withInput();\n        }\n        $model = new CmsuserModel();\n        $user = $model->where('cmsuserEmail', $this->request->getPost('cmsuserEmail'))->first();\n        // If I try to var_dump user, var_dump is not displayed, if I print string "Debug" and die()  one line above, string is printed.\n
Run Code Online (Sandbox Code Playgroud)\n

任何人都知道为什么我会收到此错误?我应该定义常量 MYSQLI_STORE_RESULT 并在哪里定义?

\n

小智 5

据我了解,您可以检查是否安装了PHP的mysqli模块。

php -m在服务器的 cli 上检查 via ,您应该已将mysqli其列为模块之一。

我在这里检查了参考https://www.php.net/manual/en/mysqli.installation.php

我在 docker 上托管的 CodeIgniter 4 文件上使用了这个,我也遇到了这个错误。经过一番研究,我只是确保在映像构建中mysqli安装/安装了 PHP 模块。