SQL-запрос дублируется на PHP PDO и отличается от результата на phpmyadmin

0

Я дублировал результат той же строки БД, когда я запрашиваю с помощью PHP PDO, и когда я выполняю тот же запрос на phpmyadmin, я получаю 2 отдельные строки, что является точным.

Я должен получить те же 2 строки, что и в phpmyadmin, но с pdo, поэтому вот мой код и мой результат pdo:

try {
    $conn = new PDO('mysql:host=mysql;dbname=mydb;charset=utf8mb4', 'root', 'tiger');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $result = $conn->query("SELECT COUNT(*) AS num_rows FROM 'banner'");
    $numRows = $result->fetchColumn();

    if ($numRows > 0) {

    $domain = $_GET['domain']; // URL PARAMETER GOES HERE

    $myQuery = $conn->prepare(
"SELECT * 
    FROM
        banner B 
    JOIN dictionary D
            ON B.dictionaryId = D.id
    WHERE
        B.domains = : domains
        AND B.dictionaryId IS NOT NULL
        AND B.startDate <= NOW ()
        AND B.finishDate >= NOW ()
    ORDER BY
        B.position ASC");
    $myQuery->bindParam(':domains', $domain);
    $myQuery->execute();
    $banner = $myQuery->fetch();
    // echo $banner[14];
    var_dump($banner);
    die;

И это результаты:

/var/www/html/dropbox_db_connection.php:54: массив (размер = 33) 'id' => строка '1' (длина = 1) 0 => строка '5' (длина = 1) 'dictionaryId' => строка '1' (длина = 1) 1 => строка '1' (длина = 1) 'name' => строка 'blink' (length = 5) 2 => строка 'blink' (length = 5) 'destinationURL' => строка 'github.com' (длина = 10) 3 => строка 'github.com' (длина = 10) 'domains' => строка 'github' (length = 6) 4 => строка 'github' (длина = 6) 'ImageUrl' => строка ' https://dl.dropboxusercontent.com/apitl/1/ABimtamHV3_o7EnMC3s5tHpYRwMwS8cyZMtfQGlqpxa6yepgnelceukKJbo9eGONQLquiy-iPAFaeK0NT1cmx0RWGu6Z_DzN0-_FLQAkpeLGm7RAYviP6yfuYvGzE9MR32h2a5OyXjJLskWupTS9bGcZzabicGxmleJeuyiOotBQUkFto3gLGgkNxXd0n1O4DdFkUoN1WB4Jijr2UDLiW3w68lAJVUgRYn3lnN393cwWIYzKEQJiphZXmNCPGXOQp7idyt5ft9aLm6bppw5rxsJDJ2Z9VzSEn1LKXyRBOIPpAf9GDqJL6g2zk-cvw7sRia0 ' (длина = 365) 5 => строка ' HTTPS://dl.dropboxusercontent. ком /apitl/1/ABimtamHV3_o7EnMC3s5tHpYRwMwS8cyZMtfQGlqpxa6yepgnelceukKJbo9eGONQLquiy-iPAFaeK0NT1cmx0RWGu6Z_DzN0-_FLQAkpeLGm7RAYviP6yfuYvGzE9MR 32h2a5OyXjJLskWupTS9bGcZzabicGxmleJeuyiOotBQUkFto3gLGgkNxXd0n1O4DdFkUoN1WB4Jijr2UDLiW3w68lAJVUgRYn3lnN393cwWIYzKEQJiphZXmNCPGXOQp7idyt5ft9aLm6bppw5rxsJDJ2Z9VzSEn1LKXyRBOIPpAf9GDqJL6g2zk-cvw7sRia0 '(длина = 365) 'положение'=> строка '5'(длина = 1) = 6> строка '5'(длина = 1) 'StartDate'=> строка' 2019-04-18 3:00: 00 '(длина = 19)
7 => строка '2019-04-18 03:00:00' (длина = 19) 'finishDate' => строка '2019-05-04 00:00:00' (длина = 19) 8 => строка '2019 -05-04 00:00:00 '(length = 19) 9 => строка' 1 '(length = 1)' it '=> string' Sed tempus libero - незаметная плацента. '(length = 41) 10 => string' Sed tempus libero - тихая плацерата. '(length = 41)' en '=> string' Curabitur at justo sit amet mi aliquam vestibulum. '(длина = 52) 11 => струна' Курабитур в свое удовольствие сидел над миром аликвам вестибюля. '(длина = 52)
'fr' => string 'Duis sed elit suscipit, venenatis ipsum vitae, molestie elit. '(длина = 63) 12 => строка' Duis sed elit suscipit, venenatis ipsum vitae, molestie elit. '(length = 63)' es '=> string' Ut ac tortor semper, finibus est ac, porta erat. '(длина = 50) 13 => строка' Ut ac пыток semper, finibus est ac, porta erat. '(length = 50)' pt '=> string' Morbi sit amet quam facilisis, tristique mi a, sagittis quam. '(length = 63) 14 => string' Morbi sit amet quam facilisis, tristique mi a, sagittis quam. '(length = 63)' de '=> string' Nulla nec sem quis velit tristique tempus vel id augue. '(длина = 57) 15 => строка' Nulla nec sem quis velit tristique tempus vel id augue. '(length = 57)' nl '=> string' Mauris tincidunt leo eget tincidunt bibendum. '(length = 47) 16 => string' Mauris tincidunt leo eget tincidunt bibendum. '(длина = 47)

Теги:

1 ответ

0

У вас есть 2 проблемы, первая из которых - дублируемая строка, это сводится к fetch() по FETCH_BOTH, что означает, что он будет возвращать как ассоциативный набор данных, так и численно проиндексированный набор данных (оба с одинаковыми ценности). Я обычно использую PDO::FETCH_ASSOC как это просто значения, проиндексированные именами столбцов.

Во-вторых, вы получаете только 1 строку, вызов fetch() обычно выполняется в цикле...

$myQuery->execute();
while( $banner = $myQuery->fetch(PDO::FETCH_ASSOC)) {
    // echo $banner['pt'];
    var_dump($banner);
}

или установите режим по умолчанию для выборки, используя

$connection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

Сделайте это только после установления соединения, чтобы все вызовы fetch() имели одинаковый стиль.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню