【问题标题】:PHP PDO only fetch 1 rowPHP PDO 仅获取 1 行
【发布时间】:2015-04-02 14:33:26
【问题描述】:

我想获取表的所有行,但它只回显 1 行。 (最新的) 尝试了很多,但对我没有任何帮助。在stackoverflow上尝试了答案,但它不起作用。

这是我用来获取行的代码:

$stmt = $pdo->prepare("SELECT * FROM admin");
$stmt->execute();
$result = $stmt->fetchAll();

foreach ($result as $row) {
    $gebruikersnaam = $row['gebruikersnaam'];
    $wachtwoord = $row['wachtwoord'];
}

希望任何人都可以帮助我。

【问题讨论】:

  • 每次迭代,它都会被覆盖,最后,你的左边是最后一个结果行

标签: php pdo


【解决方案1】:

我想获取表的所有行,但它只回显 1 行。 (最新)

foreach ($result as $row) {
    $gebruikersnaam = $row['gebruikersnaam'];
    $wachtwoord = $row['wachtwoord'];
}

假设您在循环之外使用这些变量,我可以赌 5 美元 :) 这就是为什么您只能看到最后一行的数据。要么一一删除fetchAll()fetch(),要么在循环中操作变量,以便为每一行获取新值。

试试这个,你就会明白我的意思

foreach ($result as $row) {
   print_r($row);
}

【讨论】:

  • 投注封闭的家伙哈哈!,是的,我在循环之外使用它。它获取所有内容,但.. 在 if 语句中,我想检查该值是否等于数据库中的值。当我尝试这样做时,我只能看到最后插入的值是相等的。
  • 如何将值传递给数据库(您要检查的那个),然后您没有在 PHP 中执行比较,您只需询问您的数据库是否存在某些东西?跨度>
  • 为什么不检查循环内的值呢?更好的是,为什么不按照 N.B 的建议采取行动呢?
【解决方案2】:
$stmt = $pdo->prepare("SELECT * FROM admin");
$stmt->execute();
$result = $stmt->fetchAll();
$count = $stmt->rowCount();

for ($i=0; $i < $count; $i++) {
$gebruikersnaam = $result[$i]['gebruikersnaam'];
$wachtwoord = $result[$i]['wachtwoord'];

echo 'Gebruikersnaam is : '.$gebruikersnaam.'<br/>';
echo 'Wachtwoord is : '.$wachtwoord.'<br/>';
}

或者如果你想使用 foreach:

$stmt = $pdo->prepare("SELECT * FROM admin");
$stmt->execute();
$result = $stmt->fetchAll();

foreach ($result as $row) {
$gebruikersnaam .= $row['gebruikersnaam'];
$wachtwoord .= $row['wachtwoord'];
}

echo 'Gebruikersnamen zijn : '.$gebruikersnaam.'<br/>';
echo 'Wachtwoorden zijn : '.$wachtwoord.'<br/>';

你必须稍微设计一下,因为它会把它们粘在一起。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 2014-10-28
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    相关资源
    最近更新 更多