如何将查询行解析为数组?

时间:2013-05-03 00:16:04

标签: php mysql sql

我有一个PHP登录系统,我在其中使用以下查询来比较用户名和密码:

    $mQuery = $mysqli->query("SELECT * FROM users WHERE user = '" . 
    $mysqli->real_escape_string(md5($_POST['user'])) ."' AND  pass= '" . 
    $mysqli->real_escape_string(md5($_POST['pass'])) . "'");

除了'user'和'pass'之外,用户行中还有其他字段,如'name'和'email'。如何将所有这些字段都放入数组中?

3 个答案:

答案 0 :(得分:0)

您可能想从手册开始......

$row = mysqli_fetch_array($mQuery, MYSQLI_ASSOC);

$row = $mQuery->fetch_array(MYSQLI_ASSOC);

在使用对象表示法时,请使用选项2.

http://php.net/manual/en/mysqli-result.fetch-array.php

答案 1 :(得分:0)

在PHP 5.3及更高版本中,fetch_all将所有行作为数组返回。如果指定MYSQLI_ASSOC作为结果类型,则数组中的每个元素都将是一个关联的字段数组,按名称索引。

// having done the query above

$rows = $mQuery->fetch_all(MYSQLI_ASSOC);

foreach ($rows as $row)
{
  print "email: " . $row['email'] . "<br />";
  // etc
}

对于早期版本,您可以手动执行:

$rows = array();

while ($row = $mQuery->fetch_array(MYSQLI_ASSOC))
  $rows[] = $row;

foreach ($rows as $row)
{
  print "email: " . $row['email'] . "<br />";
  // etc
}

答案 2 :(得分:0)

也许这会有所帮助:

if($result = mysqli_query($conn, $mQuery))
{
    while($row = mysqli_fetch_assoc($result))
    {
        print_r($row);
    }
    mysqli_free_result($result);
}