Помогите вытащить массив

Tw!m4

Новичок
Есть такая функция:
PHP:
function get_lang($var){
	global $db;
	$page = htmlspecialchars($_GET['page']);
	$sql = "SELECT `page_keywords`, `page_description`, `page_title`, `page_content` FROM `pages` WHERE `page_name` = ? AND page_language = ?";
	$statement = $db->prepare($sql);
	$statement->bind_param('ss', $page, $var);
	if($statement->execute()){
		while($row = $statement->fetch()){
			$rows[] = $row;
		}
	}
}
как из неё вытащить массив rows, так что б потом можно было в контенте прописывать?
 

shelestov

я тут часто
PHP:
function get_lang($var){
    global $db;
    $page = htmlspecialchars($_GET['page']);
    $sql = "SELECT `page_keywords`, `page_description`, `page_title`, `page_content` FROM `pages` WHERE `page_name` = ? AND page_language = ?";
    $statement = $db->prepare($sql);
    $statement->bind_param('ss', $page, $var);
    if($statement->execute()){
        while($row = $statement->fetch()){
            $rows[] = $row;
        }
    }
    return $rows;
}

$rows = get_lang($var);
var_dump($rows);
 

Tw!m4

Новичок
ну да, допустим:
PHP:
function get_lang($var){
	global $db;
	$page = htmlspecialchars($_GET['page']);
	$sql = "SELECT `page_keywords`, `page_description`, `page_title`, `page_content` FROM `pages` WHERE (`page_name` = ? AND page_language = ?)";
	$statement = $db->prepare($sql);
	$statement->bind_param('ss', $page, $var);
	if($statement->execute()){
		while($row = $statement->fetch()){
			$rows[] = $row;
		}
	}
	return $rows;
}
$rows = get_lang("ru");
print_r($rows);
выдает true oO.... чё не так?
 

Mamont

Новичок
Рискну предположить, что:
1. var_dump выдает array(1) { [0]=> bool(true) }
2. Используется класс mysqli

Значить цикл должен выглядеть как-то так (если ничего не путаю):
PHP:
<?php

if($statement->execute()){
   $statement->bind_result($page_keywords, $page_description, $page_title, $page_content);
   while( $statement->fetch() ){
      $rows[] = array(
         'keywords'=>$page_keywords, 
         'description'=>$page_description, 
         'title'=>$page_title, 
         'content'=>$page_content
         );
   }
}
 

shelestov

я тут часто
Возможно.
Помотрите доки по mysqli.
Я к сожалению в практике досих пор использую старую библиотеку.
Проекты очень большие и переход пока не оправдан.
 

Tw!m4

Новичок
так, чёто вчера денёк сложный получился ))
разобрался. Сделал следующим образом:
PHP:
function get_lang($var){
	global $db;
	$sql = "SELECT `page_keywords`, `page_description`, `page_title`, `page_content` FROM `pages` WHERE `page_name` = '" . htmlspecialchars($_GET['page']) . "' AND page_language = '" . htmlspecialchars($_GET['lang']) . "'";
	$result = $db->query($sql);
		while($row = $result->fetch_assoc()){
			$rows = $row;
		}
		$result->close();
		return $rows;
}
$lang = get_lang("ru");
echo $lang['page_title'];
так вроде работает...
 

Vlasov

Новичок
Мой первый пост, если что не кидайте камни.
Посоветую продебажить что возвращает ваш fetch(). Запустите такой код:
PHP:
<?php
function get_lang($var){
    global $db;
    $page = htmlspecialchars($_GET['page']);
    $sql = "SELECT `page_keywords`, `page_description`, `page_title`, `page_content` FROM `pages` WHERE (`page_name` = ? AND page_language = ?)";
    $statement = $db->prepare($sql);
    $statement->bind_param('ss', $page, $var);
    if($statement->execute()){
        while($row = $statement->fetch()){
            //$rows[] = $row;
           var_dump($row);
        }
    }
    //return $rows;
}

$var = 'something';
get_lang($var);
?>
 

Tw!m4

Новичок
спасибо, нo уже разобрались +)
в вашем примере показывает тоже что и в моих первых постах:
PHP:
bool(true)
 

Vlasov

Новичок
А в чём оказалась причина? Юзали функцию, что просто выводила статус операции вместо массива данных?
 

Tw!m4

Новичок
да, именно так! А причиной было то, что походу я не правильно написал функцию, а именно вот этот кусок:
PHP:
//...
$statement = $db->prepare($sql);
    $statement->bind_param('ss', $page, $var);
    if($statement->execute()){
        while($row = $statement->fetch()){
//...
поменяв его на этот:
PHP:
//.. $result вместо $statement - a 
$result = $db->query($sql);
        while($row = $result->fetch_assoc()){
            $rows = $row;
        }
        $result->close();
        return $rows;
//...
всё сработало

более конкретно я пока ничего не могу сказать, ибо сам только начал изучать язык.
 
Сверху