我的头撞在墙上......现在已经坚持了一段时间......
我有这个问题:
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
我已经尝试了几乎所有我能想到的东西,而这句话只是不想工作......
没有输出任何错误(我甚至做错了,以确保我的错误输出,他们做了)。
答案 0 :(得分:1)
正如Dagon在评论中提到的那样,你有两个问题。默认情况下,PHP的MySQL库会限制您一次只能使用一个查询 - 主要是为了防止多个查询SQL injection。
Howevever,mysqli has a multi_query函数支持此功能,并且在您的情况下PDO can support multiple queries with PDOStatement::newRowset
。
您也有其他选择:
我不得不偶尔处理这个问题,特别是在处理临时表时。使用SQL事务和/或简单地将每个查询拆分成单独的PHP语句都可以解决问题。