查询适用于PHPmyadmin,但不适用于PHP脚本

时间:2014-02-26 21:55:40

标签: php mysql

我的头撞在墙上......现在已经坚持了一段时间......

我有这个问题:

    include 'dbconnect.php';
    $user1id=$_SESSION['userid'];
    $stmt=$db->prepare("SET @chatroom_ID=(SELECT ID FROM chatroom
                        JOIN chatroommembers ON chatroom_ID=chatroom.ID
                        WHERE chatroommembers.user_ID=:user1id
                        ORDER BY chatroom.ID
                        LIMIT 1);
                        SELECT user_ID FROM chatroommembers 
                        WHERE chatroom_ID=@chatroom_ID 
                        AND user_ID!=:user1id
                        LIMIT 1;");
    $stmt->bindValue(':user1id',$user1id,PDO::PARAM_INT);
    $stmt->execute();
    $user2id=$stmt->fetchColumn();
    echo $user2id;

它应该做的是找到当前用户所在的聊天室ID,并回显出房间内第二个人的用户ID(房间里总是只有2个)

该查询适用于PHPmyadmin ...但不适用于我的PHP脚本

我可以回复$ user1id没有问题

如果我用简单的SELECT语句替换查询,它就可以工作,例如:

SELECT user_ID FROM chatroommembers WHERE user_ID=:user1id

我已经尝试了几乎所有我能想到的东西,而这句话只是不想工作......

没有输出任何错误(我甚至做错了,以确保我的错误输出,他们做了)。

1 个答案:

答案 0 :(得分:1)

正如Dagon在评论中提到的那样,你有两个问题。默认情况下,PHP的MySQL库会限制您一次只能使用一个查询 - 主要是为了防止多个查询SQL injection

Howevever,mysqli has a multi_query函数支持此功能,并且在您的情况下PDO can support multiple queries with PDOStatement::newRowset

您也有其他选择:

我不得不偶尔处理这个问题,特别是在处理临时表时。使用SQL事务和/或简单地将每个查询拆分成单独的PHP语句都可以解决问题。