PHP / MySQL: как получить несколько значений из метода базы данных PHP - PullRequest
1 голос
/ 20 февраля 2012

Извините за невероятно новый вопрос, но я могу видеть, как я впадаю в дурную практику, если не спрашиваю.

У меня есть метод PHP, который я хочу вернуть все значения данного столбца базы данных, чтобы поместить содержимое в раскрывающемся меню для формы HTML. Очевидно, я мог бы построить весь HTML-код в методе PHP и вернуть его в виде строки, но я думаю, что это довольно плохая практика.

Поскольку методы PHP могут возвращать только одно значение, я предполагаю, что мне нужно будет вызывать метод несколько раз, чтобы заполнить раскрывающееся меню, или передать массив из метода.

Каким было бы хорошее решение этой (предположительно) распространенной проблемы? Спасибо.

Ответы [ 5 ]

6 голосов
/ 20 февраля 2012

Ну, массив - это одно значение, содержащее множество других значений. Так что просто попросите ваш метод вернуть массив результатов.

edit: как указывает Hammerstein, вы можете использовать объекты, но это так же хорошо / плохо, как массивы в зависимости от контекста. Очень похоже.

0 голосов
/ 20 февраля 2012

Вы можете иметь массивы в массивах, поэтому, если у вас есть таблица с несколькими столбцами, вы можете назначить их массиву как отдельные массивы:

$all_results = array();
foreach($rowInDatabase as $key => $value){
    // each row will be an array with a key of column name and value of column content depending how you get the data from the DB.
    $colname = $key;
    $colVal = $value; //this is an array
    $all_results[$colname] = $colVal; //append the current row to the array
    }

}

код, подобный этому, заполнит ваш массив массивомстрока таблицы, так что если есть десять строк и пять столбцов, вы можете получить строку 2, столбец 3 с $ all_results [1] [2];(поскольку они начинаются с 0).

0 голосов
/ 20 февраля 2012

Не совсем уверен, что я понимаю, что вы хотите сделать полностью, но вы всегда можете передать результат обратно из метода, а затем просмотреть его в своем HTML.

Ваш метод будет выглядеть примерно так:

public function my_method()
{
     $result = $db->query($sql_here);
     return $result;
}

И тогда ваш HTML будет

<select>

<?

    $result = $class->my_method();

    while($row = $result->fetch_assoc())
    {
        echo '<option>'.$row['some_col'].'</option>';
    }

?>

</select>
0 голосов
/ 20 февраля 2012

Для этого нет функции PHP, поэтому вам придется формировать массив из результатов.

$column = array()
$query = mysql_query("SELECT * FROM table ORDER BY id ASC");
while($row = mysql_fetch_array($query)){
    $column[] = $row[$key]
}

Затем передайте столбец $ для просмотра (HTML)

foreach($column as $value)
{
   echo "<li>" . $value . "</li>";
}
0 голосов
/ 20 февраля 2012

Вы можете использовать объект в качестве типа возврата.Итак,

class MyReturnValue 
{
  public $Value1;
  public $Value2;
}

function getMyValues() 
{
  $results = GetDatabaseValues( ); // Assume this returns an associative array

  $result = new MyReturnValue();
  $result.Value1 = $results["Value1"];
  $result.Value2 = $results["Value2"];
}

Затем в вашем коде вы можете ссылаться на $ result.Value1 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...