Как изменить этот код с MySQL на PDO - PullRequest
0 голосов
/ 14 апреля 2019
if (isset($_GET['page_no']) && $_GET['page_no']!="") {
    $page_no = $_GET['page_no'];
    } else {
        $page_no = 1;
        }

    $total_records_per_page = 9;
    $offset = ($page_no-1) * $total_records_per_page;
    $previous_page = $page_no - 1;
    $next_page = $page_no + 1;
    $adjacents = "2"; 

    $result_count = mysqli_query($con,"SELECT COUNT(*) As total_records FROM `products`");
    $total_records = mysqli_fetch_array($result_count);
    $total_records = $total_records['total_records'];
    $total_no_of_pages = ceil($total_records / $total_records_per_page);
    $second_last = $total_no_of_pages - 1; // total page minus 1

    $result = mysqli_query($con,"SELECT * FROM `products` LIMIT $offset, $total_records_per_page");
    while($row = mysqli_fetch_array($result)){
        echo "<tr>
              <td>".$row['productCode']."</td>
              <td>".$row['productName']."</td>
              <td>".$row['MSRP']."</td>
              <td><button type='submit' class='buy'>Buy Now</button></td>
              </tr>";
        }
    mysqli_close($con);
    ?>

Мне нужно изменить этот код на формат PDO. И я не совсем уверен, что такое же функция mysqli_fetch_array в PDO.

1 Ответ

0 голосов
/ 14 апреля 2019

Вот как бы вы это сделали:

// Execute query and fetch a single cell from the result
$total_records = $PDO->query('SELECT COUNT(*) FROM `products`')->fetch(PDO::FETCH_COLUMN);

$total_no_of_pages = ceil($total_records / $total_records_per_page);
$second_last = $total_no_of_pages - 1; // total page minus 1

// prepare a statement with 2 parameters and execute it
$stmt = $PDO->prepare('SELECT * FROM `products` LIMIT ?,?');
$stmt->execute([$offset, $total_records_per_page]);
// PDO results are easily traversable
foreach ($stmt->fetchAll() as $row) {
    echo "<tr>
        <td>".$row['productCode']."</td>
        <td>".$row['productName']."</td>
        <td>".$row['MSRP']."</td>
        <td><button type='submit' class='buy'>Buy Now</button></td>
        </tr>";
}

Я заменил ваш составной запрос на подготовленное утверждение, которое вы всегда должны делать!

О извлечении: Вы можете просматривать записи по одной или извлекать их все, как я сделал, в массив и foreach на них. Есть много разных способов сделать это. Всегда помните о многих доступных вариантах извлечения PDO: https://phpdelusions.net/pdo#fetchall

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...