1

我的查询是:

$sqlCommand="select `ID` from `freecomputermarket`.`members` where `UserName`='$this->_userName';";

我将 XAMPP 用作 apache 服务器,我正在使用端口 (89)

这个类负责数据库连接:

<?php
class MySql
{
    private $_link_Id,$_query_Id,$_serverName,$_userName,$_password,$_dbName,$_rowNum;

    public function __construct()
    {
       $this->_serverName="localhost";
       $this->_userName="root";
       $this->_password="";
       $this->_dbName="freecomputermarket";
    }
    public function connect()
    {
       $this->_link_Id=mysql_connect($this->_serverName,$this->_userName,$this->_password);
       if(!$this->_link_Id)
       {
          exit("The Connect is Failed");
       }
       $db_select=mysql_select_db($this->_dbName,$this->_link_Id);
       if(!$db_select)
       {
          exit("Can't Select DataBase");
       }
    }
    public function query($sqlcommand)
    {
       $sqlcommand= addslashes($sqlcommand);
       //echo $sqlcommand;
       $this->_query_Id=mysql_query($sqlcommand,$this->_link_Id);
       exit($this->_query_Id);//print it to check if it is available.
       if(!$this->_query_Id)
          exit("Query failed");
       $this->_rowNum=mysql_affected_rows();
    }
    public function getRow()
    {
       if($this->_rowNum)
       {
          return mysql_fetch_assoc($this->_query_Id);
       }
    }
    public function getAllRows()
    {
       $arr=array();
       $count=0;
       while($count<$this->_rowNum)
       {
          array_push($arr,$this->GetRow());
          $count++;
       }
       return $arr;
    }
    public function getAffectedRowsNumber()
    {
       return $this->_rowNum;
    }
}   
?>

此代码用于连接到 mysql dbms 并执行查询。打印 $_link_Id 时,它有一个值。 打印 $_query_Id 时,它什么都没有?

4

3 回答 3

0

问题在于您没有在范围内启动连接的公共函数查询($sqlcommand)。你应该在函数查询($sqlcommand) 中启动 connect()

于 2012-09-27T13:12:25.253 回答
0
<?php
class MySql
{
    private $_link_Id,$_query_Id,$_serverName,$_userName,$_password,$_dbName,$_rowNum;

    public function __construct()
    {
        $this->_serverName="localhost";
        $this->_userName="root";
        $this->_password="";
        $this->_dbName="freecomputermarket";
    }
    public function connect()
    {
        $this->_link_Id=mysql_connect($this->_serverName,$this->_userName,$this->_password);
        if(!$this->_link_Id)
        {
                                                exit("The Connect is Failed");
        }
        $db_select=mysql_select_db($this->_dbName,$this->_link_Id);
        if(!$db_select)
        {
                                                exit("Can't Select DataBase");
        }
    }
    public function query($sqlcommand)
    {
                                        // $sqlcommand= addslashes($sqlcommand);
                                          //echo $sqlcommand;
        $this->_query_Id=mysql_query($sqlcommand,$this->_link_Id);
                                          exit($this->_query_Id);//print it to check if it is available.
        if(!$this->_query_Id)
                                                exit("Query failed");
        $this->_rowNum=mysql_affected_rows();
    }
    public function getRow()
    {
        if($this->_rowNum)
        {
                                                return mysql_fetch_assoc($this->_query_Id);
        }
    }
    public function getAllRows()
    {
        $arr=array();
        $count=0;
        while($count<$this->_rowNum)
        {
                                                array_push($arr,$this->GetRow());
                                                $count++;
        }
        return $arr;
    }
                    public function getAffectedRowsNumber()
                    {
                        return $this->_rowNum;
                    }
}   
?>

addlashes() 函数是问题所在

于 2012-09-27T13:09:16.347 回答
0

问题就在这里

$sqlcommand= addslashes($sqlcommand);

不要使用加斜线。

像这样使用

//$sqlcommand= addslashes($sqlcommand);
$this->_query_Id=mysql_query($sqlcommand,$this->_link_Id);
于 2012-09-27T12:39:24.307 回答