class — возвращает значение метода в переполнении стека

У меня небольшая проблема с возвратом значения метода 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);

но я хочу поместить каждый элемент базы данных в класс, и у класса есть соответствующие методы. Я новый разработчик в 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;

// это возвращает объект, и я хочу повторить строку ERROR + Error
MSG, как в моей функции

        }else{
return true;

// ничего не возвращаю, но данные вставляются в базу данных, и я не хочу возвращать true для использования на другой стороне приложения

        }
$conn->close();
}

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

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

если вы можете помочь мне, я ценю.
Спасибо за ваше время 😉

`

0

Решение

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]