another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Почему функция возвращает NULL вместо массива?

Index.php :
<?php  
require 'db.php';
require 'function.php';
	#DATABASE CONNECT;

$testConnect = new dbConnect('test');
$testConnect->dbConnect();


	#TEST QUERY
//PARAMETERS:

$queryConstruct = $testConnect->dbConnect();
$query = "SELECT * FROM qwert WHERE id = 1";
$fetchType = 'fetch_row()';

//ACTION:

fetchQuery($queryConstruct, $query, $fetchType); #Должна вернуть $sql массив с выборкой из БД;

?>
<?php 
require 'index.view.php';
?>


function.php :
<?php 

function fetchQuery($construct, $query, $fetchType) {
	$sql = $construct->query('{$query}')->$fetchType;
	return $sql;
}

?>


Фун-я возвращает NULL, вместо массива. Подскажите, где проблема. Спасибо.
  • Вопрос задан
  • 3684 просмотра
Решения вопроса 3
nazarpc
@nazarpc
Open Source enthusiast
$fetchType = 'fetch_row()';
Заменить на

$fetchType = 'fetch_row';

$sql = $construct->query('{$query}')->$fetchType;
Заменить на

$sql = $construct->query($query)->$fetchType();
Ответ написан
@Vampiro
По тому что нужно использовать готовые решения для работы с базой, а не делать то что уже сделано до вас 2-5 тысяч раз.

[telepat mode on]
у вас значение функции ни к чему не присваивается, то есть должно быть
$result = fetchQuery($queryConstruct, $query, $fetchType);
var_dump($result); exit;
[telepat mode off]
Ответ написан
another_dream
@another_dream Автор вопроса
Backend-разработчик, Laravel/ZF2/Yii2
Хм, решилось все просто, но несколько не понятно для меня :
//ACTION:
$sql = fetchQuery($queryConstruct, $query, $fetchType);

Почему нужно было занести вызов функции в переменную, ведь при выполнении, фун-я должна возвращать значение, в моем случае $sql? Я не понял.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для раскрытия переменной кавычки должны быть двойными:
$sql = $construct->query("{$query}")->$fetchType;
А вообще достаточно просто переменной:
$sql = $construct->query($query)->$fetchType;
Ответ написан
another_dream
@another_dream Автор вопроса
Backend-разработчик, Laravel/ZF2/Yii2
Одна странность. Если переопределить переменную в функции - она все также возвращает NULL
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы