如何从php中获取数据库中的所有数据

时间:2014-10-17 11:04:58

标签: php mysql sql pdo

这是我的代码:

<?php

/*** mysql hostname ***/
$hostname = 'localhost';

/*** mysql username ***/
$username = 'root';

/*** mysql password ***/
$password = '';

try {
    $dbh = new PDO("mysql:host=$hostname;dbname=sample", $username, $password);
    /*** echo a message saying we have connected ***/
    echo 'Connected to database <br />';

$sql = "SELECT * FROM sampletable";

$stmt = $dbh->query($sql);
$result = $stmt->fetch(PDO::FETCH_ASSOC);

foreach($result as $key =>$val){

echo $key. '-' .$val.'<br />';

}
$dbh = null;

    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>

现在我正在学习php,我想了解插入的pdo连接,更新从数据库获取数据。我引用了这个链接http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html#7.1

现在我获得了第一列值..我可以知道如何从数据库中获取所有记录吗?

提前致谢。

4 个答案:

答案 0 :(得分:1)

您需要使用

$result = $stmt->fetchAll();

而不是

$result = $stmt->fetch(PDO::FETCH_ASSOC);

答案 1 :(得分:0)

您可以使用->fetchAll()方法:

$result = $stmt->fetchAll(PDO::FETCH_ASSOC); // returns all rows
foreach($result as $key => $row) {
    echo $row['id'] . ' - ' . $row['column_name'] . '<br/>';
                     // ^ name of the column, this returns a multi dimensional
}

旁注:它仍然是一个数组,所以你需要在foreach中访问该副本的索引。

或者也是这样:

while($row = $result->fetch(PDO::FETCH_ASSOC)) {
    echo $row['id'] . ' - ' . $row['col1'] . '<br/>';
}

答案 2 :(得分:0)

你只有几个小错误。

$stmt->fetch()命令一次获得一个结果行,因此您需要在循环中运行它,我担心foreach将无法工作,因为它用于处理数组的所有项目。

<?php

/*** mysql hostname ***/
$hostname = 'localhost';
/*** mysql username ***/
$username = 'root';
/*** mysql password ***/
$password = '';

try {
    $dbh = new PDO("mysql:host=$hostname;dbname=sample", $username, $password);
    /*** echo a message saying we have connected ***/
    echo 'Connected to database <br />';

    $sql = "SELECT * FROM sampletable";

    $stmt = $dbh->query($sql);

    while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
       // you will have to change fieldname to an actual fieldname from the resultset    
       echo $result['fieldname'] . '<br />';

    }
    $dbh = null;

}
catch(PDOException $e)
{
    echo $e->getMessage();
}
?>

其他编辑:

我不知道您的列名是什么,因为您已经完成了select *,但我们假设您的表有2列1名为id,其中一列名为custname

你会做

   $sql = "SELECT * FROM sampletable";
   $stmt = $dbh->query($sql);

   while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
       echo $result['id'] . '-' . $result['custname'] . '<br>';
   }

如果您更改这样的fetch()语句,您可以将结果作为对象而不是数组,我更喜欢使用object-&gt;属性语法来表示数组语法,但结果非常相似。像这样

   $sql = "SELECT * FROM sampletable";
   $stmt = $dbh->query($sql);

   while ($result = $stmt->fetch(PDO::FETCH_OBJ)) {
       echo $result->id . '-' . $result->custname . '<br>';
   }

答案 3 :(得分:0)

您可以使用fetchAll()来获取查询中的所有结果,如下所示

<?php

/*** mysql hostname ***/
$hostname = 'localhost';

/*** mysql username ***/
$username = 'root';

/*** mysql password ***/
$password = '';

try {
    $dbh = new PDO("mysql:host=$hostname;dbname=sample", $username, $password);
    /*** echo a message saying we have connected ***/
    echo 'Connected to database <br />';

$sql = "SELECT * FROM sampletable";

$stmt = $dbh->query($sql);
$result = $stmt->fetchAll(); //instead of fetch(PDO::FETCH_ASSOC)


foreach ($results as $key => $result) {
echo $key. '-' .$val.'<br />';
}
$dbh = null;

    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>