0

mysqli_connect ステートメント $dbc のデータベース接続をセットアップしようとしています。次のようにスクリプトで動作させました。

DEFINE ('DB_USER','myName';
DEFINE ('DB_PASSWORD','somePass123';
DEFINE ('DB_HOST','localhost';
DEFINE ('DB_NAME','sitename';


// make the db connection
    $dbc = @mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME)
    OR die ('Could not connect to mysql: ' . mysqli_connect_error());

次に、セキュリティとベスト プラクティスについて SO に質問を投稿したところ、接続変数 (パスワード、ホスト、データベース名、ユーザー) が別のデータベース構成ファイルの別の場所に存在する場合は、そこから接続用の変数を呼び出す必要があるとアドバイスされました。

config/database/php 内のファイルからの関連するスニペットを次に示します。

$config['default'] = array(
    'benchmark' => TRUE,
    'persistent' => FALSE,
    'connection' => array(
        'type' => 'mysqli',
        'user' => 'myName',
        'pass' => 'somepass123',
        'host' => 'localhost',
        'port' => FALSE,
        'socket' => FALSE,
        'database' => 'sitename',
    ),
    'character_set' => 'utf8',
    'table_prefix' => '',
    'object' => TRUE,
    'cache' => FALSE,
    'escape' => TRUE
);

だから私はこれを試しました:

DEFINE ('DB_USER','$config['default']['connection']['user'])';
DEFINE ('DB_PASSWORD',$config['default']['connection']['pass']);
DEFINE ('DB_HOST',$config['default']['connection']['host']);
DEFINE ('DB_NAME',$config['default']['connection']['database']);


// make the db connection
    $dbc = @mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME)
    OR die ('Could not connect to mysql: ' . mysqli_connect_error());

ページを読み込もうとしたときに次のエラーが発生しました:「未定義の変数:構成」

次に、これを試しました:

 $dbc = @mysqli_connect(
    $config['default']['connection']['host'],
    $config['default']['connection']['user'],
    $config['default']['connection']['pass'],
    $config['default']['connection']['database'])

    OR die ('Could not connect to mysql: ' . mysqli_connect_error());

// Set the encoding
mysqli_set_charset($dbc, 'utf8');

// set the query variable
$query = "SELECT MAX(rating_date) 
          AS last_date
          FROM rating
          WHERE incident_id = $incident_id;";

//connect and run the query
$result = mysqli_query($dbc, $query);

 echo $result->fetch_object()->last_date;

?>

次に、次のエラーが発生しました:「致命的なエラー:オブジェクト以外のメンバ関数 fetch_object() の呼び出し...」

これが何を言っているのか、私には 100% 確信が持てません。昨日、PHP で SQL クエリを直接エコーできないことを知りました。これはオブジェクトであるため、「echo $result->fetch_object()->last_date;」の部分を切り取って貼り付けました。働いた。

関数で変数を定義するだけでなく、構成から変数を利用しようとしているようですが、おそらくスコープの問題が原因で接続できませんか?

$dbc 接続を含むファイルは、themes/myname/views/reports/detail.php フォルダーにあります。

データベース構成の詳細配列を含むファイルは、application/config/database.php にあります。

変数のスコープの問題のように見えますか?

$dbc 変数を作成する際のベストプラクティスは何ですか? 呼び出しているファイルとは別のディレクトリにある場合、database.php から変数を呼び出すにはどうすればよいですか? ファイル全体を include() する必要がありますか?

4

2 に答える 2

1

次のような正気のことはどうですか:

$dbc = @mysqli_connect(
  $config['default']['connection']['host'],
  $config['default']['connection']['user'],
  $config['default']['connection']['pass'],
  $config['default']['connection']['database'])
OR die ('Could not connect to mysql: ' . mysqli_connect_error());

エラーが発生し、その行がエラーメッセージ/スタックトレースでクライアントに送信された場合にdefine()備えて、ユーザー名とパスワードを含む生の文字列を呼び出しに入れないようにしているだけです。mysqli_connect()

于 2013-08-20T18:24:08.303 に答える