7

ここにconfig.phpファイルがあります

<?php

error_reporting(E_ALL ^ E_NOTICE);

/*=========== Database Configuraiton ==========*/

$db_host = "localhost";
$db_user = "test";
$db_pass = "test";
$db_name = "dbtest";


/*=========== Website Configuration ==========*/

$defaultTitle = 'testing';
$defaultFooter = date('Y').' &copy; testing';

?>

ここにconfig.phpへの参照があります

<?php


require_once "includes/config.php";
require_once "includes/connect.php";
require_once "includes/helpers.php";



header('Cache-Control: max-age=3600, public');
header('Pragma: cache');
header("Last-Modified: ".gmdate("D, d M Y H:i:s",time())." GMT");
header("Expires: ".gmdate("D, d M Y H:i:s",time()+3600)." GMT");

?>

Connect.phpは以下です

<?php

/*
        The login details are taken from config.php.
*/

try {
    $db = new PDO(
        "mysql:host=$db_host;dbname=$db_name;charset=UTF-8",
        $db_user,
        $db_pass
    );

    $db->query("SET NAMES 'utf8'");
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
    error_log($e->getMessage());
    die("A database error was encountered");
}


?>

このコードに問題がある人はいますか? connect.php から「データベース エラーが発生しました」というエラー メッセージが表示されます。すべての情報が正しいように見え、コードにエラーが表示されないため、別の目が必要です。ありがとう。

4

4 に答える 4

25

UTF-8をutf8に変更するだけです..

try {
      $db = new PDO(
              "mysql:host=$db_host;dbname=$db_name;charset=utf8",
              $db_user,
              $db_pass
            );
于 2013-04-23T07:15:14.267 に答える
1

資格情報を変数として使用する代わりに、資格情報を直接使用してみてください。

また、以下を使用してデバッグしてみてください。

catch(PDOException $e) {
    error_log($e->getMessage());
    die("A database error was encountered -> " . $e->getMessage() );
}

それが機能するかどうか教えてください。

于 2012-07-13T17:43:08.863 に答える
0

$db->query(...) は SELECT 用で、パラメーターを設定しています。

試す

$db->e​​xec(...) 代わりに、それで解決できます。

于 2012-07-13T17:47:53.710 に答える
0

以前に機能しましたか?あなたの問題は、「localhost」が「127.0.0.1」などである必要があることだと思います。

于 2012-07-13T17:26:39.583 に答える