繁体   English   中英

PHP / MySQL:如何从PHP数据库方法获取多个值

[英]PHP/MySQL: How to get multiple values from a PHP database method

抱歉,这个令人难以置信的新手问题,但是如果我不问的话,我会发现自己陷入了不良做法。

我有一个PHP方法,我想返回给定数据库列的所有值,以便将内容放在HTML表单的下拉菜单中。 我显然可以在PHP方法中构造整个HTML并将其作为字符串返回,但是我认为这是非常糟糕的做法。

由于PHP方法只能返回一个值,我想我需要多次调用该方法以填充下拉菜单,或从该方法传递一个数组。

对于这个(大概)常见问题,什么是一个好的解决方案? 谢谢。

好吧,数组是一个值,包含大量其他值。 因此,只需让您的方法返回结果数组即可。

编辑:正如Hammerstein指出的那样,您可以使用对象,但取决于上下文,其效果与数组一样好/坏。 非常相似。

您可以使用对象作为返回类型。 所以;

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等。

没有PHP函数可以执行此操作,因此您必须从结果中形成一个数组。

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

然后将$ column传递给您的视图(HTML)

foreach($column as $value)
{
   echo "<li>" . $value . "</li>";
}

您可以在数组中包含数组,因此,如果您的表中有几列,则可以将它们作为单独的数组分配给数组:

$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
    }

}

像这样的代码将用表的每行数组填充您的数组,因此,如果有十行五列,则可以使用$ all_results [1] [2]来获得第2行第3列; (因为它们从0开始)。

不太确定我是否完全理解您想要做什么,但是您始终可以将结果从方法传回,然后在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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM