0

我正在使用包含功能。我想知道使用它的水平。说到重点,我有一个名为 hitcounter.php 的页面,我想知道在我的应用程序中对该页面进行了多少次点击。所以我创建了 hitcounter.php

我的问题是我在我的一个页面中包含了这个 hitcounter.php,我想知道那个特定的命中并将它存储在数据库中。在 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]";

这就是我包含 hit counter.php 的方式

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

我的数据库连接代码:

$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 不同的行为,后者会发出致命错误。

root directory您可以使用$_SERVER['DOCUMENT_ROOT']函数和file_exists()函数来清理包含,然后创建文件的路径。例如...

<?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

在下面的示例中,我在选择AddressSalesLT数据库的表中插入了几个值。

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要使用的 a,但我的查询已databaseinsert query.

phpmyadmin
(来源:iforce.co.nz

使用以下代码进行 PHP 测试,您会注意到在下面的示例中我从不database使用mysql_select_db选择 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 您的查询将转到您指定的位置。这比在 php.ini 中primary database使用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 回答