2016-12-22 45 views
0

我嘗試轉換和mysqli代碼中使用PDOPHP的嘗試轉換到mysqli的PDO

mysqli的代碼如下所示(它的偉大工程)

$rs = "SELECT * FROM team"; 

$result = mysqli_query($con,$rs);   
$data = mysqli_num_rows($result); 
$responses = array(); 
    if($data != 0) { 
     while($results = mysqli_fetch_assoc($result)) 
      { 
     echo "<tr><td>".$results['code'] ."</td>"; 
     echo "<td>".$results['username'] ."</td>";     
     } 

我PDO代碼我試圖

$stmt = $con->prepare("select * from team"); 
    $stmt->execute(); 
    if($stmt->rowCount() > 0) 
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

我應該怎麼寫這裏while循環

在w3schools網站上,使用PDO檢索記錄的信息如下,沒有說什麼是V,也沒有說我如何從表中檢索codeusername字段。

foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
     echo $v; 
    } 
+1

你有沒有試着寫任何PDO代碼循環了嗎? – lonesomeday

+0

用於循環,並計數$ result的大小以相應地運行循環,或者根據需要 –

回答

3

這是一個可怕的驚人,方法,從數據庫中選擇數據。這比需要的複雜得多。我想它可能在某些情況下是有用的,但不是在這裏。

簡單的方法是用PDOStatement::fetch。這與mysqli_fetch_assoc的工作方式大致相同。 (你不嚴格地說需要檢查的行數,但如果沒有結果,你可能有其他代碼。)

while ($row = $stmt->fetch()) { 
    echo "<tr><td>".$row['code'] ."</td>"; 
    echo "<td>".$row['username'] ."</td>";     
} 

我的首選方式,但是,是PDOStatement::bindColumn,它擺脫陣列和使用好的純變量來代替:

$stmt->setFetchMode(PDO::FETCH_BOUND); 
$stmt->bindColumn('code', $code); 
$stmt->bindColumn('username', $username); 
while ($row = $stmt->fetch()) { 
    echo "<tr><td>$code</td>"; 
    echo "<td>$username</td>";     
} 
2
$stmt = $con->prepare("select * from team"); 
$stmt->execute(); 
if($stmt->rowCount() > 0) 
{ 
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
    { 
    echo "<tr><td>".$row['code'] ."</td>"; 
    echo "<td>".$row['username'] ."</td>"; 
    } 
} 
3

這是PDO,所以everything is MUCH simpler

foreach ($con->query("SELECT * FROM team") as $results) { 
    echo "<tr><td>".$results['code'] ."</td>"; 
    echo "<td>".$results['username'] ."</td>";     
} 
2
$rs = "SELECT * FROM team"; 
$stmt = $pdo->query($rs); 
while ($row = $stmt->fetch()) 
{ 
    echo "<tr><td>".$row ['code'] ."</td>"; 
    echo "<td>".$row ['username'] ."</td></tr>"; 
} 

$stmt = $pdo->query($rs); 
foreach ($stmt as $row) 
{ 
    echo "<tr><td>".$row ['code'] ."</td>"; 
    echo "<td>".$row ['username'] ."</td></tr>"; 
} 

$data = $pdo->query($rs)->fetchAll(); 
foreach ($data as $row) 
{ 
    echo "<tr><td>".$row ['code'] ."</td>"; 
    echo "<td>".$row ['username'] ."</td></tr>"; 
}