0

首先,如果我的英语不完美,我很抱歉,英语不是我的母语。我会尽力让自己被理解。

我正在尝试创建使用 mysqli 连接和查询数据库的所有必要步骤。这些将保留在一个单独的 php 文件中,必要时将包含该文件。我这样做只是为了不必总是编写代码来连接数据库。

在我的 dbConnection.php 文件中,我有:

<?php
require("login.php");

$connection;
function connect() {
    global $connection;

    $connection = new mysqli($host, $username, $password, $database);

    if ($connection->connect_errno) {
        printf("Connection failed: %s\n", $connection->connect_error);
        exit();
    }
}

function mysqlQuery($query) {
    global $connection;

    if($connection == NULL) connect();

    $result = $connection->query($query);
    if (!$result) {
        printf("Query failed: %s\n", $connection->error);
        exit();
    }

    return $result;
}

?>

(login.php 有连接的变量)

当我需要连接到数据库时,我使用 require("dbConnection.php");

问题是当我调用 mysqlQuery 函数时,它总是打印“查询失败:未选择数据库”。我很确定数据库名称是正确的。

当我直接在脚本中(而不是在单独的文件中)使用代码时,它可以正常工作。

提前致谢。

问题已解决,忘记声明为全局$host、$username、$password、$database。

4

1 回答 1

1

一个人的代码出错有两个主要原因:

  1. 错误的想法或算法或结构
  2. 该想法或算法或结构的错误实现

没有经验的程序员总是坚持第一个而很少注意第二个(所以你问 - “如何使用......?”)。而在现实生活中,第二个更为重要。算法很少,但错误数不胜数。一个人必须学会如何发现错误。

尽管我认为这种结构没有意义,(mysqlQuery 函数实际上没用,可以用$result = $connection->query($query) or trigger_error($connection->error."[$query]");代码行代替,这会更好),乍一看它应该可以工作。
因此,我们必须不把注意力集中在“怎么做”上。问题,但在“为什么它不起作用?”。

后一个问题的答案称为调试。您必须学习它并在日常工作中大量使用它。实际上,这意味着您必须检查代码中的每个变量是否包含所需的值。

查看 PHP 生成的所有错误对于调试也是必不可少的。
在您的代码中始终包含error_reporting(E_ALL);指令(在全局配置文件中会很好)。

此外,在开发系统上添加ini_set('display_errors',1);到您的配置文件(但在生产中将值更改为 0!)

我敢打赌,这两个指令将阐明这个问题。
如果没有 - 继续调试。

于 2012-12-16T06:17:57.060 回答