2015-07-26 5 views
0

У меня есть небольшая проблема, возвращающая значение метода php. в функции работает, как я хочу, но когда я пытаюсь создать класс и соответствующие методы, я могу вернуть правильное значение.возвращаемое значение метода в php

, если я использую эту функцию и называют это результат того, что я хочу:

function InsertData($table, array $data){ 
$connection = DataBaseConnection(); 

$row = implode(", ", array_keys($data)); 
$column = "'".implode("', '", array_values($data))."' "; 
$sql = "INSERT INTO {$table} ($row) VALUES ($column)"; 

if($connection->query($sql) === FALSE){ 
    return "Error: " . $connection->error; // return the error 
}else{ 
    return True; // return true 
}} 

я вызвать функцию таким образом, и работает отлично. retrun true, если данные вставляются, и «ERROR + error msg», если существует ошибка.

$result = InsertData('table', $data_array); 

, но я хочу поместить каждый stuf базы данных в класс, а класс имеет соответствующие методы. Я новый разработчик в php oop, и у меня проблема. Я могу возвратить те же самые значения моей предыдущей функции в моем методе корреспондентского класса

class dba{ 
     public function conn{ 
      /*some code*/ return $conn; // 
} 
     public function DBA_Insert($table, array $data) { 

     $conn = $this->Conn() ; 

     $row = implode(", ", array_keys($data)); 

     $column = "'".implode("', '", array_values($data))."' "; 
     $sql = "INSERT INTO {$table} ($row) VALUES ($column)"; 

     if($conn->query($sql) === FALSE){ 
      return "Error: " . $conn->error; 

// это возвращает объект и я хочу Retrun строки ERROR + Ошибки тзда как в моей функции

 }else{ 
      return true; 

// ничего не возвращают, ничего, но данные вставки в базу данных, и я wan't вернуться верно для использования в другой стороне Aplication

 } 
     $conn->close(); 
    } 

, чтобы вызвать класс и метод таким образом:

$insertMsg = new dba(); 
$insertMsg->DBA_Insert('messages', $data); 

, если вы можете мне помочь я apreciate. спасибо за ваше время;)

`

+0

В чем вопрос? $ connection-> query ($ sql) <<< $ connection undefined. Вы широко открыты для SQL-инъекций. – baao

+0

$ соединение - это соединение. извините за ошибку. – user3369804

+0

Возможный дубликат [Объектно-ориентированный простой пример класса php] (http://stackoverflow.com/questions/20603992/object-oriented-php-class-simple-example) – Heroselohim

ответ

0

способ вызова DBA_Insert метода показывает, что вы не назначите возвращаемое значение. $insertMsg - это просто экземпляр объекта (переменная, содержащая указатель/ссылка) класса dba, и вы вызываете один из его методов. С собственных имен ваш код должен нравится:

$dba = new dba(); 
$result = $dba->insert(...); 

Я изменил имя метода, а также, потому что он всегда будет принадлежать к объектам класса DBA и вашего экземпляра имя переменной должно быть само за себя.

+0

_ Спасибо за ваш ответ_. решить мою проблему и спасибо за объяснение моей проблемы и причину переименования метода. ** Большое спасибо ** – user3369804

Смежные вопросы