2013-05-08 2 views
0

Я пытаюсь написать функцию, которая выбирает содержимое из базы данных. Проблема, которую я испытываю, - это отсутствие понимания массивов и возврат переменных из функций.Создание динамического массива и возвращаемого массива с помощью функции-0:

Я написал функцию, но, кажется, крутится вокруг, как построить массив, а затем вернуть его из функции. Php.

Главный файл php. (Этикетки и названия были изменены, чтобы защитить невинных.)

<?php 
//include '../sb_mysqli_connect.php';//Connect to the Database 
include 'functions.php' ; //Include the functions list 

$username = 'foo'; 
$password = 'bar'; 


$fields = array(array('username', $username), array('password', $password)); //prep's  array for multiple where statements 
sbpolldb ("users",$fields, null, 1, null); //function sbpolldb($sbbeta, $sbbecon, $sbbeorder, $sbbelimit, $sbbegroup) 

echo $tablex['row_name_y']; 
?> 

Function.php файл

<?php 
    function sbpolldb($sbbeta, $sbbecon, $sbbeorder, $sbbelimit, $sbbegroup){ //sbbeta = table name, sbbecon = where condition, sbbeval = Where value, sbbesort = sort value, sbbelim - 
     include '../sb_mysqli_connect.php';//Connect to the Database 
     if (empty($sbbeorder)) { 
      $sbbeotemp=""; 
     } else { 
      $sbbeotemp=" ORDER By ".$sbbeorder; 
     } //Check if order by is null 
     if (empty($sbbelimit)){ 
      $sbbeltemp=""; 
     } else { 
      $sbbeltemp=" LIMIT ".$sbbelimit; 
     } //Check if there's a Limit set 
     if (empty($sbbegroup)){ 
      $sbbegtemp=""; 
     } else {//$ssbegtemp=' GROUP By '.$sbbegroup; 
      $count = sizeof($sbbegroup); 
      $sbbegtemp = " GROUP BY "; 
      //Loop to create WHERE conditons 
      for ($i = 0; $i < $count; $i++) { 
       $value = $sbbegroup[$i]; 
       $sbbegtemp = $sbbegtemp.$value; 
       if ($i < ($count -1)){ 
        $sbbegtemp = $sbbegtemp.' , '; 
       } 
      }; 
     } 
     if (empty($sbbecon)){ 
      $sbbectemp=''; 
     } else { 
      $count = sizeof($sbbecon); 
      $sbbectemp = 'WHERE '; 
      //Loop to create WHERE conditons 
      for ($i = 0; $i < $count; $i++) { 
       $value = $sbbecon[$i]; 
       $sbbectemp = $sbbectemp.$value[0]." ="."'".$value{1}."'"; // &#39 is the code for an apostraphe 
       if ($i < ($count -1)){ 
        $sbbectemp = $sbbectemp.' AND '; 
       } 
      }; 
     } 
     $sbbesql = "SELECT * FROM ".$sbbeta.' ' 
     .$sbbectemp 
     .$sbbegtemp 
     .$sbbeotemp 
     .$sbbeltemp; //&#34 is code for speach marks 
     mysql_select_db("database1"); 
     $result = mysql_query($sbbesql, $sbbedbc) or die($sbbesql."<br/><br/>".mysql_error());; 
     $temp = mysql_fetch_array($result, MYSQL_ASSOC); 
     // Build Array Here Dynamically $sbbeta content as the variable name. 
     // How do I then Return this Array as the name is no longer $temp? 
    } 
?> 

на строительство SQL работ, но я считаю, динамические переменные создаются с помощью $$label, который объявляет новую переменную как содержимое старой. Это относится и к массивам? Я создаю веб-приложение, которое будет выполнять множество запросов к базе данных, и я хотел бы сократить повторение кода.

ответ

2

Вы можете просто вернуть массив в Function.php (Добавляя оператор возврата в последней строке, как):

return $temp; 

Так получить возвращаемое значение в вызывающей функции,

$tablex=sbpolldb ("users",$fields, null, 1, null); 
echo $tablex['row_name']; 
+0

ура спасибо , Acharya –

+0

Нет проблем ... – progrrammer

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