2

いくつかのファイルでコードを再利用する必要があるため、ほとんどすべての場所で提案されているように、データベースに接続するプロセスをDBConfig.phpファイルにオフロードしようとしています。

提案は常に次のように組み立てられます(私の実際のコードを反映するように編集されています):

-------DBConfig.php-------
<?php
$link = mysql_connect('localhost','user','pass');
if (!$link) {
  die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db('db_name');
if (!$db_selected) {
    die ('Can\'t use db_name : ' . mysql_error());
}
?>

-------Parent.php-------
<!DOCTYPE html>
<?php
require_once 'DBConfig.php';
$something = mysql_query("SELECT * FROM `table` LIMIT 0, 30 ");
// This query works fine if the mysql_connect() and
// mysql_select_db() stuff is in this script in place
// of the require_once.
$listofthings = array();
while($temp = mysql_fetch_array($something)){
    $listofthings[] = $temp;
}
// Do other things too
?>

しかし、私がやろうとするmysql_fetch_array($something)と、警告が表示されて失敗しますmysql_fetch_array() expects parameter 1 to be resource, boolean given


DBConfig.phpの代わりにの内容を親スクリプトにドロップするだけで、すべてが美しく機能することを覚えておいてくださいrequire 'DBConfig.php';...

また、print(require 'DBConfig.php'); //- 1(PHPは1を返し、ファイルの検索とインクルードが正常に行われていることを示します。例5を参照してください)...

何が起こっているのですか、どうすれば修正できますか?Windows 7 x64で実行されているWAMPServer(Apache 2.4.2、PHP 5.4.3)のデフォルト構成を使用しています。

4

5 に答える 5

3

これなら

require 'DBConfig.php';

文字通りあなたがしていることであり、スクリプトを他のスコープで実行する方法は絶対にありません。URLを使用している場合はhttp://それが原因ですが、相対パスを使用している場合はそうではありません。

データベースに接続した後もmysql_query()呼び出しの後もエラーチェックを行っていないため、クエリが壊れている可能性が高くなります。クエリに適切なエラーチェックを追加すると、詳細がわかります。

DBConfig.phpもう1つの可能性は、関数内で呼び出す場合です。関数は、インクルードのスコープを混乱させます。しかし、あなたの例には何もないので、それは問題ではないと思います。

于 2012-10-27T17:12:48.717 に答える
0

変数$pretend_this_var_is_a_querystringで何を与えているかを知る必要があります。このエラーは通常、クエリが失敗した場合に生成されます。mysql_query()関数で渡した文字列を知る必要があります。クエリ文字列を確認してください。

DBConfig.phpにもあります。そのはず

$db_selected = mysql_select_db('db_name', $link);
于 2012-10-27T17:13:56.177 に答える
0

おそらくあなたのクエリにはいくつかの間違いがあります。試す mysql_query($query) or die( mysql_error() );

mysql_query()は、エラー時にFALSE(ブール値)を返します。

于 2012-10-27T17:15:33.863 に答える
0

これが使用している正確なコードである場合は、以下を変更してください。

require 'DBConfig.php';

に:

require('DBConfig.php');
于 2012-10-27T17:29:12.453 に答える
0

間違ったファイルが含まれていると思います。(同じ名前ですが、場所が異なります)。

必要なファイルが、実行しようとしてDBConfig.phpいるのと同じディレクトリにある場合Parent.php

require_once dirname(__FILE__).'/DBConfig.php';

ファイルを含めるDBConfig.php場合、DBConfigのコードをコピーしてparent.phpファイルに貼り付ける場合、効果は同じでなければなりません(あなたの場合)。これが発生しない場合は、次の理由があります。

  • あなたが含めるファイルはあなたが思っているものではありません。(set_include_path他のフォルダにあるものもあります)
  • あなたが含めるファイルの内容はあなたが思っているものではありません。

他に方法はありません。

于 2012-10-27T19:12:37.067 に答える