我在更新我的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类。