我想在PHP上創建一些類和方法,並且一些函數是很好的輸出,但在上次輸出中,我不能拋出一個變量,這是我的類。類不能返回對象
在這裏,我調用類,
$fields = array('nik');
$query = new Query();
$query
->select($fields)
->from('data_asset_hw')
->orderby('nik','DESC')
->execute('fetchAll');
print json_encode($query);
選擇,從和排序依據是好的。但我不能得到最後一個函數(執行)的輸出,只是空對象我發現{}
。
參見下面我的課程,方法。 如果我手動打印查詢對象,並且輸出正常。但如果我使用返回這$query
。我發現輸出是null
。也許我想念什麼?
<?php
Class Query
{
private $query;
function __construct(){
$this->query = "";
}
function select($fields=array()){
if(!is_array($fields)){
$sql = sprintf("SELECT %s ",$fields);
$this->query .= $sql;
return $this;
}else{
$fields = implode("`, `", $fields);
$sql = sprintf("SELECT `%s` ", $fields);
$this->query .= $sql;
return $this;
}
}
function from($table){
$table = trim(strtolower(stripslashes($table)));
$sql = sprintf("FROM %s ", $table);
$this->query .= $sql;
return $this;
}
function orderby($field,$order){
$sql = sprintf("ORDER BY %s %s", $field,$order);
$this->query .= $sql;
return $this;
}
function where($command){
$sql = sprintf("WHERE %s ", $command);
$this->query .= $sql;
return $this;
}
function execute($fetch){
try{
$database = DatabaseFactory::getFactory()->getConnection();
(string)$this->query;
$query = $database->prepare($this->query);
if(!$query){
throw new Exception('The SQL statement can not be prepared!');
}
$execute = $query->execute();
if(!$execute){
throw new Exception('The PDO statement can not be executed!');
}
// output is normally
print_r($query->$fetch());
// cannot return object
return $query->$fetch();
} catch (PDOException $pdoException) {
echo '<pre>' . print_r($pdoException, true) . '</pre>';
exit();
} catch (Exception $exception) {
echo '<pre>' . print_r($exception, true) . '</pre>';
exit();
}
}
}
我發現我的錯誤只是添加公共$輸出;並返回$ this-> output = $ query - > $ fetch()。和wata .....我已經完成了。 謝謝 對不起,我英語不好。
結果已經用'print_r'獲取。您__無法兩次獲取它,因此請移除'print_r'行。 –
'$ result = $ query - > ...-> execute('fetchAll'); echo json_encode($ result)'?另外,所有這些'print_r'語句都會毀掉你的JSON響應 – Phil
就是''''''''''''''''前面的'$'是故意的嗎?在'$ query - > $ fetch()'編輯:啊,我現在看到它...但是,u_mulder是正確的。 – Jakumi