我稍微提高了PHP的功能,自从我上次用PHP编写代码以来已经有3年了。欢迎任何见解!我会给你尽可能多的信息来解决这个错误,所以这里就是这样!
文件
含
现在我的当前代码的问题是正在建立数据库连接,但我的数据库拒绝被选中。我的查询应该可以工作,但由于我的数据库没有被选中,所以进行任何数据交换都很烦人!
的config.php
<?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我可以看到错误并且它说:
无法执行查询。原因:未选择数据库
老实说,我不知道为什么它不会起作用,而且我已经在相当长一段时间内摆弄它了。欢迎帮助,我提前感谢你!
迎接
柠檬
答案 0 :(得分:2)
您在函数中使用的值未设置值。您可能需要将使用的变量转换为$this->dbName
等,或者将值分配给使用的变量。
修改用户对config.php
中定义的变量的评论:
您真的应该尝试获取适合该类中每个类的数据。最终,您的变量可供整个应用程序使用,此时无法确定变量是否被包含config.php
但在调用database.php
之前的文件更改。
在调用之前,我会使用调试工具验证变量的值或只是var_dump()
。
答案 1 :(得分:0)
您的Database类方法connect和selectDb尝试读取未设置的变量($ dbhost,$ dbname,$ con等)。您可能希望将这些值传递给构造函数并将它们设置为类属性。更好的是,查看PDO(或ORM)并忘记创建自己的db类。