0

PHPの経験を積むために構築および拡張しているブログがあります。mysql から新しい mysqli に移行することにしました。また、変数を定義してデータベースに接続する別のファイルも作成しました。すべての変数と関数を定義する appConfig.php があります。

<?php
    define("DEBUG_MODE", true);
    define("SITE_ROOT", "http://blog.zacharysaathoff.com/");
    define("DATABASE_HOST", "127.0.0.1");
    define("DATABASE_USERNAME", "**********");
    define("DATABASE_PASSWORD", "**********");
    define("DATABASE_NAME", "**********");
    define("HOST_WWW_ROOT", "/home1/ohairclu/public_html/zsaathoffblog/");
    function js_redirect($url, $seconds=0) {  
        echo "<script language=\"JavaScript\">\n";  
        echo "<!-- hide from old browser\n\n";       
        echo "function redirect() {\n";  
        echo "window.location = \"" . $url . "\";\n";  
        echo "}\n\n";  
        echo "timer = setTimeout('redirect()', '" . ($seconds*1000) . "');\n\n";  
        echo "-->\n";  
        echo "</script>\n";  
        return true;  
    }  
    function handle_error($user_error_message, $system_error_message) {
        js_redirect('http://blog.zacharysaathoff.com/error.php?error_message='.$user_error_message.'&system_error_message='.$system_error_message, 0);
        exit();
    }
    function debug_print($message) {
        if (DEBUG_MODE) {
            echo $message;
        }
    }
    echo "configured";
?>

また、データベースに接続する必要がある databaseConnection.php もあります。

<?php
    require_once 'appConfig.php';
    global $mysqli;
    $mysqli = new mysqli(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME);
    if ($mysqli->connect_errno) {
        handle_error("There was a problem connecting to the database that holds the information we need to get you connected.", "Failed to connect to MySQL: (".$mysqli->connect_errno.") ".$mysqli->connect_error);
    }
    return $mysqli;
?>

グローバル変数が望ましくないことはわかっています。それは私が試したものでした。と同じことreturn。私はそれがおそらくそこに属していないことを知っています. これらのファイルが必要なファイルは、homePageLinks.php です。

<?php
    require_once 'appConfig.php';
    require_once 'databaseConnection.php';
    $mysqli = new mysqli(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME);
    if ($mysqli->connect_errno) {
        handle_error("There was a problem connecting to the database that holds the information we need to get you connected.", "Failed to connect to MySQL: (".$mysqli->connect_errno.") ".$mysqli->connect_error);
    }
    $stmt = $mysqli->prepare("
        SELECT `date`, `title`, `path`, `image_path`
        FROM `ohairclu_blog_comments`.`posts` 
        ORDER BY `date` DESC LIMIT 8;
    ") or handle_error("There was a problem getting the recent posts.", "prepare failed :".htmlspecialchars($mysqli->error));
    $stmt->execute() or handle_error("There was a problem getting the recent posts.", "execute failed :".htmlspecialchars($stmt->error));
    $stmt->bind_result($date,$title,$path,$image_path) or handle_error("There was a problem getting the recent posts.", "bind_result failed :".htmlspecialchars($stmt->error));
    while($stmt->fetch()) {
        $formatted_date = date('F j, Y', strtotime($date));
        $results .= '<a href="'.$path.'" class="recent"><h4 class="home-head">'.$formatted_date.':<br>'.$title.'</h4><img src="'.$image_path.'" class="no-border"></a>';
    }
    echo $results;
?>

この構成では、動作します。ただし、homePageLink.php で databaseConnection.php コードを繰り返しています。しかし、homePageLink.php からこのコードを削除するたびに

$mysqli = new mysqli(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME);
if ($mysqli->connect_errno) {
    handle_error("There was a problem connecting to the database that holds the information we need to get you connected.", "Failed to connect to MySQL: (".$mysqli->connect_errno.") ".$mysqli->connect_error);
}

それは動作しません。削除すると、mysqli の準備が失敗します。しかし、エラーメッセージはありません。なぜうまくいかないのかわかりません。面白いのは、他のファイルで私が望むように機能していることです。クエリと出力以外に違いはありません。

4

1 に答える 1

2

globaldatabaseConnection.php で何かを宣言している理由がわかりません。使い方もreturn間違っています。どちらのステートメントも関数と組み合わせて使用​​されますが、そのファイルには関数がありません。両方の宣言を削除してみて、それが機能するかどうかを確認してください。

<?php
    require_once 'appConfig.php';
    $mysqli = new mysqli(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME);
    if ($mysqli->connect_errno) {
        handle_error("There was a problem connecting to the database that holds the information we need to get you connected.", "Failed to connect to MySQL: (".$mysqli->connect_errno.") ".$mysqli->connect_error);
    }
于 2013-10-31T16:32:32.997 に答える