2014-10-17 57 views
0

這裏是我的代碼:如何來從數據庫中的所有數據在PHP

<?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

現在我第一列值..我可以知道如何從數據庫中獲取所有記錄?

在此先感謝。

回答

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/>'; 
} 
+0

什麼是col1? @ghost – deepika 2014-10-17 11:10:49

+0

@deepika你不能直接回顯'$ val',它仍然是一個數組,內部爲 – Ghost 2014-10-17 11:11:15

+0

@deepika你需要將它作爲'$ row ['column_name'];'在循環內部訪問 – Ghost 2014-10-17 11:13:49

1

您需要使用

$result = $stmt->fetchAll(); 

而不是

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

從您的回答,我有這樣的0陣 1陣 – deepika 2014-10-17 11:12:01

+0

可以打印結果,檢查回聲「

";print_r($result);echo "
」;你需要改變你的for循環代碼或打印echo $ val ['column_name']''。
; – 2014-10-17 11:17:06

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()聲明這樣你可以得到的結果作爲對象,而不是一個數組,我更喜歡對象 - >屬性語法的數組語法,但結果非常相似。像這樣

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

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

好@RiggsFolly:現在我得到了,,所有的名字..但我想顯示像這樣1-xx 2-yy ..這裏1,2是id的。那是自動增量。爲了該做什麼 – deepika 2014-10-17 11:18:15

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(); 
    } 
?> 
相關問題