Преобразовать в PDO типа mysql_fetch_array

#php #mysql

#php #mysql

Вопрос:

Я хотел бы попросить помощи о том, как преобразовать приведенный ниже код в тип PDO, особенно mysql_fetch_array. Я могу заставить его работать правильно, используя этот код, но я хочу преобразовать в PDO.

  <?php

    $query = "SELECT * from name";
    $result = mysql_query($query);

    $cols = 6;
    echo "<table>";
    do {
        echo "<tr>";
        for ($i = 1; $i <= $cols; $i  ) {

            $row = mysql_fetch_array($result);
            if ($row) {
                $name = $row['fname'];
    ?>
                    <td>
                    <table>
                    <tr valign="top">
                    <td>
                    <?php echo '<input type="checkbox" name="name[]" id="name[]" value="' . $name . '"/>' . $name . "n"; ?>
                    </td>
                    <td width="30">amp;nbsp;</td>   
                    </tr>
                    </table>
                    </td>
    <?php
            } else {
                echo "<td>amp;nbsp;</td>";
            }
        }
    } while ($row);
    echo "</table>";
    ?>
  

Ответ №1:

Во-первых, вы можете прочитать больше на http://php.net/pdo .

 $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

$query = "SELECT * from name";

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

$stmt->execute();

// Start your html col/row setup

// Loop through your cols

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

Для вашего примера нет необходимости «готовиться», однако это хорошая практика, когда вы начинаете передавать значения в свой запрос.

Комментарии:

1. Я обнаружил небольшую проблему при использовании кода. Поскольку после цикла я буду отображать данные в форме флажка, я не могу получить данные других записей, вместо этого последняя запись в флажке — это только то, что я могу получить всегда. но, используя mysql_fetch_array, я мог бы выбрать что-либо из флажка, и я считаю, что получаю его значение. есть предложения?

2. я попробовал $row = $find_all_service_tags->fetchAll(PDO::FETCH_ASSOC), но он возвращает пустой результат

3. Если вы создаете fetchAll() , то все результаты будут локализованы в виде массива: $results = $find_all_service_tags->fetchAll(PDO_FETCH_ASSOC) затем вы можете выполнить пошаговый переход по массиву $results .