2016-12-22 4 views
0

ich den Mysqli Code zu konvertieren Ich versuche PDO zu verwendenPHP- Versuch Mysqli zu konvertieren PDO

Mysqli Code sieht wie folgt aus

$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>";     
     } 

Mein PDO-Code (das funktioniert gut) ich habe versucht,

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

Wie soll ich eine while-Schleife schreiben hier

auf w3schools Website, die Informationen zum Abrufen der Datensätze mit PDO ist wie folgt, die nicht gesagt, was ist V und nicht sagen, wie bekomme ich die Felder code und username aus der Tabelle.

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

Haben Sie versucht noch keine PDO-Code für die Schleife zu schreiben? – lonesomeday

+0

Verwenden Sie die for-Schleife, und zählen Sie die Größe von $ result, um die Schleife entsprechend oder für jede erforderliche Anforderung auszuführen –

Antwort

3

dass eine horrifically schreckliche Art und Weise ist, Daten auszuwählen aus einer Datenbank. Es ist viel komplexer als nötig. Ich nehme an, es könnte in einem bestimmten Kontext nützlich sein, aber nicht hier.

Der einfache Weg ist mit PDOStatement::fetch. Dies funktioniert ähnlich wie mysqli_fetch_assoc. (Sie müssen nicht unbedingt notwendig sprechen die Zeilenanzahl zu überprüfen, wenn Sie einen anderen Code haben könnten, wenn es keine Ergebnisse.)

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

Meine bevorzugte Weg ist jedoch mit PDOStatement::bindColumn, die von Arrays entledigt und verwendet stattdessen schöne Ebene Variablen:

$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

Es ist PDO, so 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>"; 
} 

oder

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

oder

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