【问题标题】:Selecting MySql table data into an array将 MySql 表数据选择到数组中
【发布时间】:2011-06-11 09:19:10
【问题描述】:

我尝试从 mysql 中捕获数据以将它们全部放入数组中。 假设:

    users table
    -----------------------
    id| name | code 
    ----------------------
    1| gorge | 2132
    2| flix | ksd02
    3| jasmen | skaod2

    $sql = mysql_query("select id, name, code from users");
    $userinfo = array()
    while($row_user = mysql_fetch_array($sql)){
    $userinfo = $row_user[name] 
    }
-------------------------
foreach($userinfo as $usinfo){
echo $usinfo."<br/>";
}

这是我只能插入用户名但不能在 userinfo 数组中插入代码和 ID 的问题,请帮我将所有数据插入同一个数组中。

[P.S] 请不要面向对象。

【问题讨论】:

  • 更新了我的答案,这有帮助吗?

标签: php mysql arrays metadata


【解决方案1】:
$sql = mysql_query("select id, name, code from users");
$userinfo = array();

while ($row_user = mysql_fetch_assoc($sql))
    $userinfo[] = $row_user;

这将为您提供$userinfo 作为具有以下结构的数组:

[
    [id => 1, name => 'gorge', code => '2123'],
    [id => 2, name => 'flix', code => 'ksd02'],
    [id => 3, name => 'jasmen', code => 'skaod2']
]

如果要输出数据:

foreach ($userinfo as $user) {
    echo "Id: {$user[id]}<br />"
       . "Name: {$user[name]}<br />"
       . "Code: {$user[code]}<br /><br />";
}

【讨论】:

  • 我确定您输入的速度非常快,但是您使用了 mysql_query 两次。那是行不通的。
  • @user553786,据我了解,这回答了您的问题。请进一步解释您要做什么。
  • 我问一下当while循环是ex中的工作重点时如何在数组中插入id、名称、代码
  • user.. 这行将按照您的要求执行:$userinfo[] = $row_user;你试过了吗? $row_user 将包含 ID、名称和代码。它将被重新分配给下一个数组,而不是变量 $row_user(如 $userinfo[] 所示)。这就是为什么两个答案都有相同的解决方案。
  • 好吧,我试着像你说的那样 $userinfo[] = $row_user;你试过了吗?是的,我试着给我那个 ^^ 致命错误:不能使用 [] 阅读
【解决方案2】:
while($row_user = mysql_fetch_assoc($sql)){
   $userinfo[] = $row_user;
}

foreach($userinfo as $usrinfo){
   echo "Id: ".$usrinfo['id']."<br />";
   echo "Name: ".$usrinfo['name']."<br />";
   echo "Code: ".$usrinfo['code']."<br />";
}

【讨论】:

  • 无需创建新数组。使用 mysql_fetch_assoc 或将 MYSQL_ASSOC 传递给 mysql_fetch_array 以获取您正在构建的数组。并且字符串(您的数组索引)属于单引号。您的代码将在每个循环中抛出 3 个 E_NOTICE 通知。
  • 为什么你更新你的第一个答案我认为第一种方法比第二种方法更好,但两种解决方案都可以
【解决方案3】:
   while($row_user = mysql_fetch_array($sql)){
    $row_id = $row_user ["id"];
        $row_author = $row_user ["author"];
        $row_code = $row_user ["code"];
       $userinfo[] = array("id"=> $row_id , "author"=> $row_author, "code"=> $row_code);
    }
foreach ($userinfo as $user) {
    echo "Id: {$user[id]}\n"
       . "Name: {$user[name]}\n"
       . "Code: {$user[code]}\n\n";
}

【讨论】:

  • 恭喜,你绕着月亮飞到了街角商店。
【解决方案4】:

我找到了这段代码,我节省了时间:

<?php
$sql=mysql_query("select * from table1");

/*every time it fetches the row, adds it to array...*/
while($r[]=mysql_fetch_array($sql));

echo "<pre>";
// Prints $r as array 
print_r ($r);
echo "</pre>";
?>

【讨论】:

    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 2012-07-30
    • 2020-02-27
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 2017-01-26
    相关资源
    最近更新 更多