簡體   English   中英

SQL查詢在PHP PDO上重復,並且與phpmyadmin上的結果不同

[英]SQL query duplicated on PHP PDO and different from the result on phpmyadmin

當我使用PHP PDO查詢時,當在phpmyadmin上執行相同的查詢時,我得到了同一數據庫行的重復結果,我得到了2個准確的不同行。

我必須像在phpmyadmin上一樣獲得2行,但要使用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:數組(size = 33)'id'=>字符串'1'(length = 1)0 =>字符串'5'(length = 1)'dictionaryId'=>字符串'1'(長度= 1)1 =>字符串'1'(長度= 1)'名稱'=>字符串'blink'(長度= 5)2 =>字符串'blink'(長度= 5)'destinationURL' =>字符串'github.com'(長度= 10)3 =>字符串'github.com'(長度= 10)'域'=>字符串'github'(長度= 6)4 =>字符串'github'(長度= 6) 'IMAGEURL'=>字符串' https://dl.dropboxusercontent.com/apitl/1/ABimtamHV3_o7EnMC3s5tHpYRwMwS8cyZMtfQGlqpxa6yepgnelceukKJbo9eGONQLquiy-iPAFaeK0NT1cmx0RWGu6Z_DzN0-_FLQAkpeLGm7RAYviP6yfuYvGzE9MR32h2a5OyXjJLskWupTS9bGcZzabicGxmleJeuyiOotBQUkFto3gLGgkNxXd0n1O4DdFkUoN1WB4Jijr2UDLiW3w68lAJVUgRYn3lnN393cwWIYzKEQJiphZXmNCPGXOQp7idyt5ft9aLm6bppw5rxsJDJ2Z9VzSEn1LKXyRBOIPpAf9GDqJL6g2zk-cvw7sRia0 '(長度= 365)5 =>字符串' HTTPS://dl.dropboxusercontent。 COM / apitl / 1 / ABimtamHV3_o7EnMC3s5tHpYRwMwS8cyZMtfQGlqpxa6yepgnelceukKJbo9eGONQLquiy-iPAFaeK0NT1cmx0RWGu6Z_DzN0-_FLQAkpeLGm7RAYviP6yfuYvGzE9MR 32h2a5OyXjJLskWupTS9bGcZzabicGxmleJeuyiOotBQUkFto3gLGgkNxXd0n1O4DdFkUoN1WB4Jijr2UDLiW3w68lAJVUgRYn3lnN393cwWIYzKEQJiphZXmNCPGXOQp7idyt5ft9aLm6bppw5rxsJDJ2Z9VzSEn1LKXyRBOIPpAf9GDqJL6g2zk-cvw7sRia0 '(長度= 365) '位置'=>字符串'5'(長度= 1)6 =>字符串'5'(長度= 1) '的startDate'=>字符串' 2019年4月18日03: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'(長度= 19)9 =>字符串'1'(長度= 1)'它'=>字符串'Sed tempus libero a tristique placerat。 '(length = 41)10 =>字符串'Sed tempus libero一個三位一體的占位符。 '(length = 41)'en'=>字符串'Curabitur at justo sit amet mi aliquamvestibulum。 '(長度= 52)11 =>字符串'在居所前的胡瓜叢生。 '(長度= 52)
'fr'=>字符串'Duis sed elit suscipit,venenatis ipsum vitae,molestie elit。 '(長度= 63)12 =>字符串'Duis sed elit suscipit,venenatis ipsum vitae,molestie elit。 '(length = 63)'es'=>字符串'Ut ac tortor semper,finibus est ac,porta eret。 '(長度= 50)13 =>字符串'Ut交流電阻,finibus est交流,門。 '(長度= 50)'pt'=>字符串'Morbi坐在amet quam便利店,tristique mi a,sagittis quam。 '(長度= 63)14 =>字符串'Morbi坐在amet quam facilisis,三叉戟a mi,sagittis quam。 '(length = 63)'de'=>字符串'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'=>字符串'Mauris tincidunt leo eget tincidunt bibendum。 '(長度= 47)16 =>字符串'Mauris tincidunt leo eget tincidunt bibendum。 '(長度= 47)

您有2個問題,第一個是要復制的行,這FETCH_BOTH 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()所有調用都具有相同的樣式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM