在文件中找不到MySQLi和PDO,但在其他任何地方都可以使用

时间:2019-04-23 13:19:53

标签: php mysqli pdo

我在Raspbian上有一个apache2 Web服务器。我的一个PHP文件有一些问题...

该文件应该执行以下操作:使用MySQLi或PDO在我的数据库上检查项目是否托管在我的数据库中或我的Github帐户中,然后它获取内容(在db中或使用GitHub API)显示在我的数据库中页面。

我检查项目是否存在的部分在其他文件中工作正常。 使用PDO在数据库中获取项目内容的部分也可以在其他文件中使用(也可以在MySQLi中使用)。 我使用GitHub API获得项目的部分可以在其他文件中使用...

但是当我将所有这些添加到一个文件中时,出现了HTTP 500错误...

在CLI中,我检查了文件中的错误:

PHP Notice:  Undefined variable: db in /var/www/html/projet.php on line 21
PHP Fatal error:  Uncaught Error: Call to a member function prepare() on null in /var/www/html/projet.php:21
Stack trace:
#0 {main}
  thrown in /var/www/html/projet.php on line 21

我验证了PDO和MySQLi扩展是否已激活。被激活了。 我试图更改var名称...也不起作用。 我尝试了PDO和MySQLi。同样的问题... 我重新启动了Apache2和MySQL。

这是我的php.ini:http://myfic.ga/phpinfo.jpg。 这是我的config.php文件的一部分,在其中声明数据库:

try {
  $db = new PDO("mysql:host=".DBHOST.";charset=utf8mb4;dbname=".DBNAME, DBUSER, DBPASS);
  $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch(PDOException $e) {
  $dbError = $e->getMessage();
}

这是我遇到错误的项目页面。

<?php
// I include the config and composer files
require 'index-fichiers/config.php';
require 'vendor/autoload.php';
use Milo\Github;
use erusev\parsedown;

// I check if the project's ID is in the URL
if (!isset($_SERVER['QUERY_STRING'])) {
   // If it's not, I redirect elsewhere
} else {

    // I get the project in the database
    $stmt = $db->prepare("SELECT ID, github, nom, date, descriptionCourte, texte, telechargeable, dlLien FROM projets WHERE ID = :ID"); // That's line 21
    $stmt->execute(array(':ID' => $_SERVER['QUERY_STRING']));
    $row = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!isset($row['nom'])) {
      // The project doesn't exists
    } else {
      // The project exists
    }

. . .

这很奇怪,因为相同的代码段可以在我的其他文件中使用... 我希望我写的东西不多,希望你能帮我。

0 个答案:

没有答案