[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка при помощи функции
gam0ra
Всем привет вопрос такой
Вобщем я в PHP новечек может че не так сделал

function get_select_db($table_name){
$queyr = "SELECT id,name,name_val FROM $table_name";
$result = mysql_query($queyr);
if(mysql_query($queyr)){
if(mysql_num_rows($result) >= 1){
return $num_rows = mysql_num_rows($result);
return $row = mysql_fetch_array($result);
}
else{
return false;
}
}

else{
return false;
}
}


Хочу из функции отправить массив с выборкой вот
Вот так вот делаю

get_select_db('Имя таблицы');
echo $row['name_val'];

И почему то пустота может че не так делаю?)
Если все не так альтернативный способ плиз)
FatCat
Цитата (gam0ra @ 19.06.2014 - 19:08)
get_select_db('Имя таблицы');

Переменная $row определена в функции, но не определена в месте вызова функции.
Вот так получится получить результат работы функции:
$row = get_select_db('Имя таблицы');


_____________
Бесплатному сыру в дырки не заглядывают...
FatCat
А нет, все равно не получится.
Цитата (gam0ra @ 19.06.2014 - 19:08)
if(mysql_num_rows($result) >= 1){
return $num_rows = mysql_num_rows($result);
return $row = mysql_fetch_array($result);
}

Первый ретурн передаст количество строк и завершит работу функции. Второй ретурн просто не сработает.

_____________
Бесплатному сыру в дырки не заглядывают...
gam0ra
FatCat
О заработало))без $num_rows блин а если возвращаешь 2 переменых то как быть? в $row массив а в $num_rows простая цыфа
killer8080
Цитата (gam0ra @ 19.06.2014 - 20:08)
И почему то пустота может че не так делаю?)

да все не так
во первых делаешь запрос дважды
Цитата (gam0ra @ 19.06.2014 - 20:08)
    $result = mysql_query($queyr);
    if(mysql_query($queyr)){

во вторых два return подряд быть не может, после первого функция завершит работу
Цитата (gam0ra @ 19.06.2014 - 20:08)
        if(mysql_num_rows($result) >= 1){
            return $num_rows = mysql_num_rows($result);
            return $row = mysql_fetch_array($result);
        }

killer8080
Цитата (gam0ra @ 19.06.2014 - 20:32)
а если возвращаешь 2 переменых то как быть?

        if(mysql_num_rows($result) >= 1){
$num_rows = mysql_num_rows($result);
$row = mysql_fetch_array($result);
return array('num_rows' => $num_rows, 'data' => $row);
}
gam0ra
killer8080
я делаю 2 запроса чтобы если вдруг таблицы нету и будет false чтобы вернуть из функции false)
gam0ra
killer8080
Блин можно же $result проверить)
gam0ra
killer8080
Почему то только 1 запись из базы возвращается даже если в цыкле прогнать
$gsd = get_select_db('car_state');  
$i = 0;
do{
echo $gsd['row']['id'];
$i++;
}
while($gsd['num_rows'] >= $i);

Возврощает 1111 в базе 4 записи
kjdgh
Если я не ошибаюсь, Вам нужно чтото типа этого


function user($id){
$query = DB::run() -> queryFetchAll("SELECT name FROM users WHERE user_id = '".$id."'");
if(!empty($query)){
return $query;
}
return FALSE;
}

Правда, тут синтаксис PDO, но суть та же

_____________
Новичек в программировании и вообще не разбираюсь в этом, так что не вините.



killer8080
Цитата (gam0ra @ 19.06.2014 - 20:57)
Почему то только 1 запись из базы возвращается даже если в цыкле прогнать

естественно одна, ты же больше не вытаскивал из базы biggrin.gif
Вообще мне непонятно назначение сией говнокодерской функции. Если извлечь все записи из произвольной таблицы, то зачем тогда в запросе указаны фиксированные поля? Или у тебя куча разных таблиц с одинаковой структурой? biggrin.gif Да и лимит не мешало бы задать, в общем что не то ты делаешь.
linker
function get_select_db($table_name)
{
$arr = array();
$result = mysql_query("SELECT id,name,name_val FROM $table_name");
if ($result)
{
while($row = mysql_fetch_assoc($result))
$arr[] = $row;
}
return $arr;
}

foreach(get_select_db('table') as $row)
echo $row['id'];


_____________
Gear Framework
Gear Framework на Github
gam0ra
killer8080
Да куча таблиц с одинаковой структорой сдела так чтобы мног ораз запросы не писать)во раз это говнокод как сделать из него нормальный код?) и для чего лимит?))
gam0ra
Лан всем спасибо кто чтото ответил)
Все помогли
Вот 2 функции которые решают мою задачу)

function get_select_db($table_name){
$queyr = "SELECT id,name,name_val FROM $table_name";
$result = mysql_query($queyr);
if($result){
if(mysql_num_rows($result) >= 1){
$result = get_array_db($result);
return $result;
}
}
}


function get_array_db($result){
$res_array = array();

$count = 0;

while($row = mysql_fetch_array($result)){
$res_array[$count] = $row;
$count++;
}
return $res_array;
}

foreach(get_select_db('car_state') as $row):
print_r($row);
endforeach;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.