2016-12-22 2 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); 

Как я должен написать цикл, а здесь

на веб-сайте w3schools информация, предоставленная для извлечения записей с использованием PDO, приведена ниже, которая не указала, что такое V, и не говорит, как мне получить поля code и username из таблицы.

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>"; 
} 
Смежные вопросы