PHP에서 일부 클래스와 메서드를 만들려고하는데 일부 함수는 좋은 출력이지만 최종 출력에서는 변수를 throw 할 수 없습니다. 이것은 내 클래스입니다. 여기클래스가 객체를 반환 할 수 없습니다.
난에서
$fields = array('nik');
$query = new Query();
$query
->select($fields)
->from('data_asset_hw')
->orderby('nik','DESC')
->execute('fetchAll');
print json_encode($query);
선택 클래스, 전화 ORDERBY이 좋다. 하지만 난 마지막 함수 (실행)에서 출력을 얻을 수 없습니다, 그냥 null이 개체는 {}
발견 발견.
아래 클래스의 execute()
을 참조하십시오. 수동으로 쿼리 개체를 인쇄하면 출력이 정상적으로 처리됩니다. 그러나 만약 내가 이것을 사용한다면 $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();
}
}
}
오류가 발생했습니다. public $ output;을 추가하십시오. $ this-> output = $ query -> $ fetch()를 반환합니다. 그리고 wata ..... 나는 벌써 끝났다. 감사합니다. 나쁜 영어로 죄송합니다.
결과가 이미 'print_r'으로 페치됩니다. __can__t__을 두 번 가져 오면'print_r' 줄을 제거하십시오. –
'$ result = $ query -> ...-> execute ('fetchAll'); echo json_encode ($ result)'? 또한 모든 print_r 명령문은 JSON 응답을 망칠 것입니다. – Phil
의도적으로'fetch' 앞에'$'이 있습니까? '$ query -> $ fetch()'편집 : 아, 이제 알겠지만 ... 그러나 u_mulder는 정확합니다. – Jakumi