PHP数据库选择问题


PHP database selection issue

我在更新我的PHP方面有点困难,自从我上次用PHP编码以来已经有3年了。欢迎提出任何见解!我会给你尽可能多的信息,我可以解决这个错误,现在开始!

文件

  • config。
  • database.php
  • news.php
  • BLnews.php
  • index . php

  • config.php -> news.php
  • database.php -> news.php
  • news.php -> BLnews.php
  • BLnews.php -> index.php

现在我当前代码的问题是数据库连接正在进行,但我的数据库拒绝被选中。查询我应该工作,但由于我的数据库没有被选中,这是一种恼人的得到任何数据交换去!

config。

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "test";
?>

database.php

<?php
class Database {
    //-------------------------------------------
    //    Connects to the database
    //-------------------------------------------
    function connect() {
        if (isset($dbhost) && isset($dbuser) && isset($dbpass) && isset($dbname)) {
            $con = mysql_connect($dbhost, $dbuser, $dbpass) or die("Could not connect: " . mysql_error());
            $selected_db = mysql_select_db($dbname, $con) or die("Could not select test DB");
        }
    }// end function connect
} // end class Database
?>

News.php

<?php
// include the config file and database class
include 'config.php';
include 'database.php';
...
?>

BLnews.php

<?php
// include the news class
include 'news.php';
// create an instance of the Database class and call it $db
$db = new Database;
$db -> connect();
class BLnews {
    function getNews() {
        $sql = "SELECT * FROM news";
        if (isset($sql)) {
            $result = mysql_query($sql) or die("Could not execute query. Reason: " .mysql_error());
        }
        return $result;
    }
?>

index . php

<?php
...
include 'includes/BLnews.php';
$blNews = new BLnews();
$news = $blNews->getNews();
?>
...
<?php 
        while($row = mysql_fetch_array($news))
        {
        echo '<div class="post">';
        echo '<h2><a href="#"> ' . $row["title"] .'</a></h2>';
        echo '<p class="post-info">Posted by <a href="#"> </a> | <span class="date"> Posted on <a href="#">' . $row["date"] . '</a></span></p>';
        echo $row["content"];
        echo '</div>';
        }
        ?>

这几乎是所有应该得到的信息但是由于$result = mysql_query($sql) or die("Could not execute query. Reason: " .mysql_error());中的mysql_error,我可以看到错误,它说:

无法执行查询。原因:没有选择数据库

老实说,我不知道为什么它不能工作,我已经摆弄它相当一段时间了。帮助是最欢迎的,我提前感谢你!

打招呼柠檬

您在函数中使用的值没有设置值。您可能需要将所使用的变量转换为$this->dbName等,或者为所使用的变量赋值。

编辑用户对config.php中定义的变量的评论:

您确实应该尝试获取该类中每个类的适当数据。最终你的变量对你的整个应用程序都是可用的,在这一点上没有告诉变量是否被一个文件改变了,包括config.php,但在database.php被调用之前。

我将使用调试工具并验证变量的值,或者在调用之前仅var_dump()它们。

您的数据库类方法connect和selectDb尝试从未设置的变量($dbhost, $dbname, $con等)中读取。您可能希望将这些值传递给构造函数并将其设置为类属性。更好的方法是使用PDO(或ORM),而不要创建自己的db类。