【问题标题】:Php push user array into users array and loop through users and user data (properties)php将用户数组推入用户数组并循环遍历用户和用户数据(属性)
【发布时间】:2017-05-23 04:07:06
【问题描述】:

我有一堆用户进入一个数据库表(名为“users”),每个用户的属性存储在表的列中:id、username、first_name、last_name 等等。

当用户登录时,她/他的数据会从数据库中检索出来并显示在 HTML 表格中;为此我制作了函数(在functions.php文件中):

function user_data() {
  $users = array();
  $func_num_args = func_num_args();
  $func_get_args = func_get_args();
  if ($func_num_args > 1) {
    unset($func_get_args[0]);
    $fields = '`' . implode( '`, `', $func_get_args) . '`';
  }
  $query = "SELECT $fields FROM users";
  $result = query($query);
  $col = mysqli_fetch_assoc($result);   
  array_push($users, $col);

  print_r($users);
  return $users;
}

然后在用户页面上:

$user_data = $user_data[0];
echo "<span>Welcome, " . $user_data['first_name'] . " " .    $user_data['last_name'] . "!</span>";

数据库中有 2 个用户,但 $users 数组只包含一个用户,如 print_r($users) 所示:

Array
(
[0] =&gt; Array
    (
        [username] =&gt; ajax
        [first_name] =&gt; Razvan
        [last_name] =&gt; Zamfir
        [email] =&gt; razvan.zamfir80@gmail.com
        [telefon] =&gt; 0743127315
        [oras] =&gt; Bucuresti
        [adresa] =&gt; Strada Alexandru Ipsilanti nr. 6, bloc 29E, sc. B, et. 3, ap. 83.
    )
);

我需要遍历所有用户每个用户的属性以显示一个通用表,该表首先显示用户的名称姓氏和每行的编辑按钮

我做错了什么?

【问题讨论】:

    标签: php mysql arrays loops foreach


    【解决方案1】:

    迭代查询指定的字段的,然后使用 fetch_assoc

    获取每个字段
    function user_data() {
      $users = array();
      $func_num_args = func_num_args();
      $func_get_args = func_get_args();
      if ($func_num_args > 1) {
        unset($func_get_args[0]);
        $fields = '`' . implode( '`, `', $func_get_args) . '`';
      } 
    
    //$result = query($query);
     $conn = new mysqli("yourhost","username","pass", "dbname");
      $query = "SELECT $fields FROM users";
    $result=$conn->query($query);
    if ($result->num_rows > 0) {
     while ($row =$result->fetch_assoc()) {
            array_push($users,$row);
        }
    
        /* free result set */
        mysqli_free_result($result);
    
    }
       print_r($users);
        return $users;
     }
    

    然后迭代 user_data() 方法返回的数组以提取值。

    var $usr = user_data();    
    foreach ($usr as $arr){
     foreach ($arr as $key => $value){
        echo $key ." ".$value;
     }
      }
    

    【讨论】:

    • 我实现了上面的代码,它给出了错误:警告:mysqli_query() 期望参数 1 为 mysqli,给定 null。
    • 您好,但是当我是唯一一个试图帮助您的人时,您真的需要对我投反对票吗.. :)。顺便说一句,mysqli_query() 中的第一个参数 $your_connection_var 是您的 mysqli 对象,例如 $conn = new mysqli("yourhost","username","pass", "dbname");,将这个 $conn 传递给。无论如何,我已经编辑了我的答案以简化它。
    • 我认为上面提到的答案是正确的,您需要在从数据库中获取数据并存储到用户数组中时运行循环。否则你参考示例代码:while($row = mysql_fetch_assoc($result)){ $my_arary[] = $row; print_r($row); }
    猜你喜欢
    • 1970-01-01
    • 2016-04-01
    • 2021-02-13
    • 1970-01-01
    • 2014-06-11
    • 2011-10-19
    • 2015-11-29
    • 2021-05-21
    • 2018-01-29
    相关资源
    最近更新 更多