PDO提取不返回任何内容 [英] PDO fetch returns nothing

查看:72
本文介绍了PDO提取不返回任何内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一个小问题. 我有以下代码:

I've encountered a little problem. I have the following code:

    $query = $db->prepare('(SELECT last_visit, last_ip FROM user_log WHERE user_id = :id) 
                            UNION
                           (SELECT time AS last_visit, packet_hex AS last_ip FROM crack_log WHERE target_id = :id)
                            ORDER BY last_visit DESC LIMIT 0,10;');
    $query->execute(array(':id'=> $_SESSION['id']));
    $log = $query->fetchAll(PDO::FETCH_ASSOC); //Last visit/IP

    var_dump($log);

哪个返回:

array(0) { } 

我已经在phpmyadmin中尝试了该查询,并且工作正常.您能帮我找到错误吗?

I've tried the query in phpmyadmin and it worked fine. Can you please help me find the error?

推荐答案

根据文档

不能在同一个名称中两次使用相同名称的命名参数标记 准备好的声明. 您不能将多个值绑定到单个命名参数中,因为 例如,SQL语句的IN()子句.

You cannot use a named parameter marker of the same name twice in a prepared statement. You cannot bind multiple values to a single named parameter in, for example, the IN() clause of an SQL statement.

在这种情况下,您应该使用类似的

In you case, you should use something like

$query = $db->prepare('(SELECT last_visit, 
                               last_ip 
                        FROM user_log 
                        WHERE user_id = :id_1
                       ) 
                        UNION
                       (SELECT time AS last_visit,
                               packet_hex AS last_ip 
                        FROM crack_log 
                        WHERE target_id = :id_2
                       )
                       ORDER BY last_visit DESC LIMIT 0,10;'
                     );
    $query->execute(array(':id_1'=> $_SESSION['id'],
                          ':id_2'=> $_SESSION['id'] 
                         )
                   );  

这篇关于PDO提取不返回任何内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆