通过Ajax调用PHP文件中的MySQL连接单例对象

通过Ajax调用PHP文件中的MySQL连接单例对象,php,javascript,mysql,ajax,singleton,Php,Javascript,Mysql,Ajax,Singleton,嘿,伙计们,我有下面的样本。我有一个从mySQL数据库加载的导航,其中包含一个名为getNavi.PHP的PHP文件: $query="SELECT * FROM projects WHERE category=\"$category\""; $result=mysql_query($query); $num=mysql_numrows($result); mysql_close(); while ($row = mysql_fetch_object($result)) { $titl

嘿,伙计们,我有下面的样本。我有一个从mySQL数据库加载的导航,其中包含一个名为getNavi.PHP的PHP文件:

$query="SELECT * FROM projects WHERE category=\"$category\"";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();

while ($row = mysql_fetch_object($result)) {
    $title=$row->title;
    $id=$row->id;
    echo "<div class=\"sublink\" data-subsite=\"$id\" data-category=\"$category\" data-title=\"$title\" ><a href=\"#\">$title<br />";
}
这一部分是它开始出现问题的地方,因为我的div的内容有时只是部分加载,或者根本没有加载。文本未被剪切,但大部分标题和信息未加载。有时,当我反复点击同一链接时,信息会切换

问题是,在我加载的所有PHP文件中,我打开和关闭了一个SQL连接。 现在,作为一名Java程序员,我认为为我与成员函数的连接创建一个类会很好,我可以调用它。当然,我想到了一个单例对象,但我不知道在创建这样的PHP文件时如何调用这些方法:

<?php
class DBConnection {

  private static $instance;

  private function __construct() {
    $user="root";
    $password="";
    $database="klb";
    mysql_connect("localhost",$user,$password);
    @mysql_select_db($database) or die( "Unable to select database");  
 }

  public function __destruct() {
      mysql_close();
 }

  public static function getInstance() {

    if(!self::$instance) {
      self::$instance = new self();
    }

    return self::$instance;
  }

  public function getNaviForCategory($category) {
    $query="SELECT * FROM projects WHERE category=\"$category\"";
    $result=mysql_query($query);
    $num=mysql_numrows($result);
    while ($row = mysql_fetch_object($result)) {
        $title=$row->title;
        $id=$row->id;
        echo "<div class=\"sublink\" data-subsite=\"$id\" data-category=\"$category\" data-title=\"$title\" ><a href=\"#\">$title<br />";
    }
  }

 public function getInfosForProject($id) {
    $query="SELECT * FROM projects WHERE id=\"$id\"";
    $result=mysql_query($query);
    $num=mysql_numrows($result);

    while ($row = mysql_fetch_object($result)) {
        $infos=$row->info;
        echo $infos;
    }
  } 

   private function createTableProjects(){
        $query="CREATE TABLE projects (id int(6) NOT NULL auto_increment,category varchar(30) NOT NULL,title varchar(30) NOT NULL,
        info varchar(200) NOT NULL,text varchar(8000) NOT NULL,PRIMARY KEY (id),UNIQUE id (id))";
        mysql_query($query);
   }
}

?>
编辑:

我用以下代码解决了这个问题:

<?php
require_once( 'dbconnection.php');
$category = $_GET["category"];
DBConnection::getInstance()->getNaviForCategory($category);
?>

例如,这行代码仅在我选择其他类别时有效。

可能在getNavi.php中,而不是在旧代码中

$category = intval($_GET['category']);
DBConnection::getInstance()->getNaviForCategory($category);

似乎有效,但如何从外部文件中的类访问对象?否则每个php文件都必须实现整个类。好的,似乎还有另一个问题。。当我在不同类别的项目之间切换时效果很好,但当我在同一类别的项目之间切换时,它会随机切换divs内容如果您不使用自动加载,请使用require_once('YOUR_FILE')关于第二个问题。。。我不知道辛格尔顿现在工作得很好。但我的ajax代码似乎有问题,我将在上面编辑
<?php
require_once( 'dbconnection.php');
$category = $_GET["category"];
DBConnection::getInstance()->getNaviForCategory($category);
?>
 $('#titleContent').text(title);
$category = intval($_GET['category']);
DBConnection::getInstance()->getNaviForCategory($category);