0

include関数を使用しています。使用レベルを知りたい。要するに、hitcounter.phpというページがあり、アプリケーションでそのページに何回ヒットしたかを知りたいと思っています。だから私はhitcounter.phpを作成しました

私の問題は、このhitcounter.phpを私のページの1つに含めて、その特定のヒットを知り、それをdbに保存したいということです。hitcounter.phpにdbconnection.phpを含めます。アプリケーションにログインして、hitcounter.phpを含めた特定のページにアクセスすると、データベースが選択されていないというエラーが発生します。

2.8年の経験の中で、初めてこのエラーが発生しました。グーグルで検索しましたが、答えが見つかりませんでした。

私のヒットカウンターコード:

include"dbconnection.php";
//Adds one to the counter 
mysql_query("UPDATE counter SET patient_dashboard = patient_dashboard + 1")or die (mysql_error());

//Retreives the current count 
$count = mysql_fetch_row(mysql_query("SELECT patient_dashboard FROM counter"))or die(mysql_error());

//Displays the count on your site
 print "$count[0]";

これは私がヒットcounter.phpを含める方法です

<?php include"../includes/subpageheader.php";
      include"../includes/hitcounter.php"; 
?>

mydatabase接続コード:

$conn=mysql_connect('localhost','root','');
//echo $conn."<br/>";
$db=mysql_select_db('health');

PHPのinclude関数を使用するレベルの数まで知りたいです。
だから、このエラーを解決する方法は誰でも私を助けてくれますか?

4

2 に答える 2

1

含む

ここINCLUDEにあるphpドキュメントからの説明。

ファイルは、指定されたファイル パスに基づいてインクルードされます。何も指定されていない場合は、指定された include_path に基づいてインクルードされます。ファイルが include_path に見つからない場合、include は失敗する前に呼び出しスクリプト自身のディレクトリと現在の作業ディレクトリを最終的にチェックインします。include コンストラクトは、ファイルが見つからない場合に警告を発します。これは、致命的なエラーを発生させる require とは異なる動作です。

$_SERVER['DOCUMENT_ROOT']関数とfile_exists()root directory関数を使用してインクルードをクリーンアップし、ファイルへのパスを作成できます。例えば...

<?php
$my_root = $_SERVER['DOCUMENT_ROOT'];
$subpageheaderphp = $my_root . "/direct/path/to/file/from/root/subpageheader.php";
if(file_exists($subpageheaderphp)){include $subpageheaderphp;}else{echo "subpageheader in directory $subpageheaderphp could not be found <br/>";}
$hitcounterphp = $my_root . "/direct/path/to/file/from/root/hitcounter.php";
if(file_exists($hitcounterphp)){include $hitcounterphp;}else{echo "hitcounterphp in directory $hitcounterphp could not be found <br/>";}

PHP の例... 以下は、別のファイルをインクルードする刺激に使用するファイル構造です。

ファイル構造
(出典: iforce.co.nz )

IncludeFrom.phpの内容

<?php
$DownStructure = "../../../includeTo.php";
echo "Including from the current directory: ".$DownStructure."<br/>";
if(file_exists($DownStructure)){include $DownStructure;}
$UpStructure = $_SERVER['DOCUMENT_ROOT']."/start/includeTo.php";
echo "<Br/>Including from first directory: ".$UpStructure."<br/>";
if(file_exists($DownStructure)){include $UpStructure;}

includeTo.phpの内容

<?php echo "<b>IncludeTo.php</b> was included!!"; ?>

PHP の結果

結果
(出典: iforce.co.nz )

これの利点は、フォルダー構造内のファイルの追跡と移動がはるかに簡単になることです。これを行うことで、アプリケーションのベースからインクルードすることになり、サイト フォルダー構造を下のレベルに移動する必要はなく、上のレベルに移動する必要がなくなります。どちらのソリューションでも問題ありませんが。との違いは、$DownStructureは相対パスであるのに対し、絶対パスであるということです。$UpStructure$DownStructure$UpStructure

データベース未選択エラー

データベースが選択されていないことに対する非常に簡単な解決策は. queriesたとえばSELECT * FROM mydatabase.mytable WHERE column = 'value'、またはphp 構文 にデータベースを含めるように更新するにはSELECT * FROM $database.$table、どこ$database$table行きたいかについての必要な情報を格納しています。

Address以下の例では、SalesLTデータベースが選択されたテーブルにいくつかの値を挿入しています。

INSERT INTO SalesLT.Address (AddressLine1, City, StateProvince, CountryRegion, PostalCode) VALUES ('75 W. 66th Street','New York','NY','United States','10023')

アドレステーブル

CREATE TABLE IF NOT EXISTS `address` (
`AddressLine1` varchar(200) NOT NULL,
`City` varchar(200) NOT NULL,
`StateProvince` varchar(200) NOT NULL,
`CountryRegion` varchar(200) NOT NULL,
`PostalCode` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

PhpMyAdmin の結果。使用する を選択していませんprimary databaseが、クエリで を選択しdatabaseていinsert queryます。

phpmyadmin
(出典: iforce.co.nz )

次のコードを使用した PHP テスト。以下の例で、 mysql_select_dbdatabaseで aを選択していないことがわかります。

<?php
$conn = mysql_connect("localhost", "root", "") or die(mysql_error());
echo "Connected to MySQL<br />";
$result = mysql_fetch_array(mysql_query("SELECT * FROM SalesLT.Address"));
echo "<pre>";print_r($result);echo"</pre>";
phpinfo();
?>

結果...

PHPテスト
(出典: iforce.co.nz )

クエリに を含める利点はdatabase、クロスサーバー クエリを実行できることです。クエリに接続している限り、指定したdatabase 場所に移動しますprimary databaseこれは、phpのmysql_select_db関数でを選択するよりもはるかに効率的です。

于 2012-07-02T08:07:12.980 に答える
0

あなたのエラーはインクルードとは何の関係もないように思えます。問題は、データベースを選択していないことです。次の例を見てください。

 <?php

 $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
 if (!$link) {
 die('Not connected : ' . mysql_error());
 }

// make foo the current db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
 die ('Can\'t use foo : ' . mysql_error());
}
?>
于 2012-07-02T08:03:11.780 に答える