繁体   English   中英

PDO Mysql 没有正确返回结果

[英]PDO Mysql Not returning results properly

我被这种非常奇怪的情况困住了。

我有一个 Mysql 服务器和一个应用程序服务器。 应用服务器通过专用网络连接到 Mysql,我授予. 两个用户的权限。

这是我来自应用服务器的代码:

$db2 = new PDO('mysql:host=' . $host . ';dbname=' .$database. ';charset=utf8mb4', $userid, $db_password);
$db2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db2->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$somequery = $db2->query('SELECT mail,message_id from mc_mails');
$somequery->execute();

$somedata = $somequery->fetchAll(\PDO::FETCH_ASSOC);

pretty_print($somedata); //my own <pre>print_r()</pre> function

var_dump($somedata); //shows raw dump

//so below I try to do again in a try loop to get Exception, and there's no exception.
try {
    $somequery->execute();

    while ($row = $somequery->fetch(PDO::FETCH_ORI_NEXT)) {
        pretty_print($row);
    }
} catch (PDOException $e) {
    echo $e->getMessage();
}

以上产生以下结果:

这是来自pretty_print():

Array
(
    [0] => Array
        (
            [mail] => 20
            [message_id] => <2061A721-82BE-48EC-BA44-D2CD6D6DAC00@gmail.com>
        )

    [1] => Array
        (
            [mail] => 21
            [message_id] => <8064AD4C-7C30-499B-8D83-E7DBABADCF36@gmail.com>
        )

    [2] => Array
        (
            [mail] => 22
            [message_id] => 
        )

    [3] => Array
        (
            [mail] => 23
            [message_id] => 
        )

    [4] => Array
        (
            [mail] => 24
            [message_id] => 
        )

    [5] => Array
        (
            [mail] => 25
            [message_id] => 
        )

    [6] => Array
        (
            [mail] => 26
            [message_id] => 
        )

    [7] => Array
        (
            [mail] => 27
            [message_id] => <850E2143-F797-4B6B-8F29-1004EEBCC0D2@gmail.com>
        )

    [8] => Array
        (
            [mail] => 28
            [message_id] => 
        )

    [9] => Array
        (
            [mail] => 29
            [message_id] => 
        )

    [10] => Array
        (
            [mail] => 30
            [message_id] => <59DED427-255B-45EB-AC10-172FD49D529D@gmail.com>
        )

    [11] => Array
        (
            [mail] => 31
            [message_id] => <50360840-52AD-44FE-9257-B51610F36171@gmail.com>
        )

    [12] => Array
        (
            [mail] => 34
            [message_id] => 
        )

    [13] => Array
        (
            [mail] => 35
            [message_id] => 
        )

)

这是来自 var_dump():

array(14) { [0]=> array(2) { ["mail"]=> int(20) ["message_id"]=> string(48) "<2061A721-82BE-48EC-BA44-D2CD6D6DAC00@gmail.com>" } [1]=> array(2) { ["mail"]=> int(21) ["message_id"]=> string(48) "<8064AD4C-7C30-499B-8D83-E7DBABADCF36@gmail.com>" } [2]=> array(2) { ["mail"]=> int(22) ["message_id"]=> string(48) "" } [3]=> array(2) { ["mail"]=> int(23) ["message_id"]=> string(48) "" } [4]=> array(2) { ["mail"]=> int(24) ["message_id"]=> string(48) "" } [5]=> array(2) { ["mail"]=> int(25) ["message_id"]=> string(48) "" } [6]=> array(2) { ["mail"]=> int(26) ["message_id"]=> string(48) "" } [7]=> array(2) { ["mail"]=> int(27) ["message_id"]=> string(48) "<850E2143-F797-4B6B-8F29-1004EEBCC0D2@gmail.com>" } [8]=> array(2) { ["mail"]=> int(28) ["message_id"]=> string(48) "" } [9]=> array(2) { ["mail"]=> int(29) ["message_id"]=> string(48) "" } [10]=> array(2) { ["mail"]=> int(30) ["message_id"]=> string(48) "<59DED427-255B-45EB-AC10-172FD49D529D@gmail.com>" } [11]=> array(2) { ["mail"]=> int(31) ["message_id"]=> string(48) "<50360840-52AD-44FE-9257-B51610F36171@gmail.com>" } [12]=> array(2) { ["mail"]=> int(34) ["message_id"]=> string(48) "" } [13]=> array(2) { ["mail"]=> int(35) ["message_id"]=> string(48) "" } }

这是来自 fetch 循环:

Array
(
    [mail] => 20
    [0] => 20
    [message_id] => <2061A721-82BE-48EC-BA44-D2CD6D6DAC00@gmail.com>
    [1] => <2061A721-82BE-48EC-BA44-D2CD6D6DAC00@gmail.com>
)
Array
(
    [mail] => 21
    [0] => 21
    [message_id] => <8064AD4C-7C30-499B-8D83-E7DBABADCF36@gmail.com>
    [1] => <8064AD4C-7C30-499B-8D83-E7DBABADCF36@gmail.com>
)
Array
(
    [mail] => 22
    [0] => 22
    [message_id] => 
    [1] => 
)
Array
(
    [mail] => 23
    [0] => 23
    [message_id] => 
    [1] => 
)
Array
(
    [mail] => 24
    [0] => 24
    [message_id] => 
    [1] => 
)
Array
(
    [mail] => 25
    [0] => 25
    [message_id] => 
    [1] => 
)
Array
(
    [mail] => 26
    [0] => 26
    [message_id] => 
    [1] => 
)
Array
(
    [mail] => 27
    [0] => 27
    [message_id] => <850E2143-F797-4B6B-8F29-1004EEBCC0D2@gmail.com>
    [1] => <850E2143-F797-4B6B-8F29-1004EEBCC0D2@gmail.com>
)
Array
(
    [mail] => 28
    [0] => 28
    [message_id] => 
    [1] => 
)
Array
(
    [mail] => 29
    [0] => 29
    [message_id] => 
    [1] => 
)
Array
(
    [mail] => 30
    [0] => 30
    [message_id] => <59DED427-255B-45EB-AC10-172FD49D529D@gmail.com>
    [1] => <59DED427-255B-45EB-AC10-172FD49D529D@gmail.com>
)
Array
(
    [mail] => 31
    [0] => 31
    [message_id] => <50360840-52AD-44FE-9257-B51610F36171@gmail.com>
    [1] => <50360840-52AD-44FE-9257-B51610F36171@gmail.com>
)
Array
(
    [mail] => 34
    [0] => 34
    [message_id] => 
    [1] => 
)
Array
(
    [mail] => 35
    [0] => 35
    [message_id] => 
    [1] => 
)

我不知道为什么有些数组是空的。 注意var_dump结果显示有 48 的字符串,但它仍然是空的。

该循环还显示了数组中的某些内容,但它永远不会被打印出来。 但是,我在 ssh 中直接使用的完全相同的查询给了我以下信息。 所有字段都设置好了。

在此处输入图片说明

我不确定这是否是问题,但我的message_idvarchar(1000) - 是的,它非常大,但我刚刚开始了解电子邮件标头,我读到 rfc 大约为 1000 个字符的 message-id,尽管我对此表示怀疑永远过去。

需要帮助请。 我被困住了。

编辑:这也发生在许多领域,为了清楚起见,我只是选择了一个领域。

您正在转储到浏览器中,并且这些消息 ID 具有<> ,这意味着它们被呈现为未知/非法的 html 标签。 做一个页面的查看源,你会看到它们在那里

我猜 DO 出现的前两个是用&lt;...&gt;编码的&lt;...&gt; ,所以它们显示为文本,而不是呈现为 html。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM