我是OOP的新手,我正试图抓住它。我要做的是返回表中的所有数据。现在只有2行,但我不知道如何将所有数据放入数组中,然后将其一直返回到$ results变量。
请帮忙。
<?php
include('dates.php');
$events = new dates();
echo $events->getNumberEvents(); <-----returns the number of rows in the table (Works as expected)
$results = $events->getRows(); <------Doesn't work.
?>
日期等级
<?php
/********************************************
* Class to connect and get dates from a database
*********************************************/
require 'phpDatabaseClass.php';
class dates{
private $db;
private $arr2 = array();
/****************************
* Constructor which creates the $db variable
****************************/
function __construct()
{
$this->db = new phpDatabaseClass();
}
/****************************
* Function which calls the database class and returns the number of rows
****************************/
public function getNumberEvents()
{
$sql = "select count(*) from events";
return $this->db->queryNumber($sql);
}
/****************************
* Function which calls the database class and returns the actual rows
****************************/
public function getRows()
{
$sql = "select * from events";
$this->arr2 = $this->db->queryString($sql);
foreach($this->arr2 as $key=>$val)
{
//$this->arr2 = $val;
//echo $val;
}
}
}
?>
phpDatabaseClass
<?php
/********************************************
* Class to connect and query a mysql database
*********************************************/
require 'config.php';
class phpDatabaseClass {
private $db;
private $arr = array();
/****************************
* Constructor function which makes the connection to the database
****************************/
public function __construct()
{
try
{
$this->db = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USERNAME, DB_PASSWORD);
}
catch(PDOexception $e)
{
echo 'Can\'t connect to database. Please contact the site administrator';
}
}
/****************************
* Function which returns the number of rows
****************************/
public function queryNumber($sql)
{
$stmt = $this->db->prepare($sql);
$stmt->execute();
$resultsCount = $stmt->fetchColumn();
return $resultsCount;
}
/****************************
* Function which returns the data in the rows
****************************/
public function queryString($sql)
{
$stmt = $this->db->prepare($sql);
$stmt->execute();
$results = $stmt->fetch(PDO::FETCH_ASSOC);
foreach($results as $key=>$val)
{
$this->arr = $val;
//echo $this->arr;
}
return array($this->arr);
}
}
?>
答案 0 :(得分:2)
public function getRows()
{
$sql = "select * from events";
$this->arr2 = $this->db->queryString($sql);
$return = array();
foreach($this->arr2 as $key=>$val)
{
$return[$key] = $val;
}
return $return;
}
如果你想在那个阶段做任何事情。只需返回即可:
return $this->db->queryString($sql);
回声做:
foreach($results as $result)
{
echo $result->fieldname;
}
回应所有事情:
foreach($results as $result)
{
foreach($result as $key => $value)
{
echo $key.': '.$value;
}
}
作为对象而不是数组访问的原因是mysqli将行作为对象返回。