【问题标题】:select class in oop mysqli and php 5 [duplicate]在oop mysqli和php 5中选择类[重复]
【发布时间】:2016-03-07 09:19:14
【问题描述】:

你好,这听起来很简单,但这里似乎有问题,

include_once('class.DBconnnection.php');//connects to DB and works fine

class execute extends db
{

private $sqlString;
private $selected;
private $querySelected;

public function select($sqlString)
{
$connection=$this->getConnection();
$querySelected=$connection->query($sqlString);
if($querySelected->num_rows>0){
$this->Fetch();
}
else{
    echo'No Data Available';
    }   
}   

public function Fetch(){
return $querySelected->fetch_array();

}

}

关于实现上述类

 try{

$connect=db::getInstance();
$conn=$connect->getConnection();
$execute=new execute();
$execute->select('select * from users limit 5');
while($execute->Fetch()){
    echo $row['username'].'<br/>';
    }
}
catch(Exception $e){
    echo $e->getMessage();
    }

在运行时我收到错误:Fatal error: Call to a member function fetch_array() on a non-object in C:\wamp\www\PHP5_Testing\classes\class.execute.php on line 20

谁能帮我解决这个问题?当我使用程序 mysqli 时它工作正常,但现在问题出在 oop mysqli

【问题讨论】:

  • 设置你必须使用的类属性$this-&gt;querySelected
  • 这是因为return $querySelected-&gt;fetch_array(); $querySelected 不是一个对象,它的未定义变量

标签: php oop mysqli php-5.2


【解决方案1】:

当你使用 OOP 时,你必须遵守规则!

我在您的代码中看到的一些问题,在这里:

改变

public function Fetch(){
return $querySelected->fetch_array();

}

进入:

public function Fetch(){
return $this->querySelected->fetch_array();

}

和

$querySelected=$connection-&gt;query($sqlString);

进入

$this-&gt;querySelected=$connection-&gt;query($sqlString);

希望这能解决您的问题。

【讨论】:

  • 在作者说它不起作用之前,那是因为他在他的try{}catch{} 中使用了一个未定义的变量$row!
  • @Neat,你说得对,但是,他的所有代码都有问题! .他不遵守规则。当他尝试$execute-&gt;Fetch()(在 $row... 之前)时,他遇到了错误
  • 可以确认是一团糟:)
  • 完美,我觉得你有阴影,不用担心代码,我只是习惯于程序化编程
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 2014-01-11
  • 1970-01-01
相关资源
最近更新 更多