把我的头撞到墙上......现在已经被困在这个问题上有一段时间了......
我有这个查询:
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 脚本中无效
我可以 echo $user1id 没有问题
如果我用简单的 SELECT 语句替换查询,它就会起作用,例如:
SELECT user_ID FROM chatroommembers WHERE user_ID=:user1id
我已经尝试了几乎所有我能想到的方法,但这个声明只是不想起作用......
没有错误被输出(我什至犯了错误以确保我的错误会输出,他们确实这样做了)。
最佳答案
正如 Dagon 在评论中提到的,您有两个疑问。默认情况下,PHP 的 MySQL 库将限制您一次只能使用一个查询 - 主要是为了防止 SQL injection来自多个查询。
但是,mysqli has a multi_query函数支持此功能,在您的情况下 PDO can support multiple queries with PDOStatement::newRowset
.
您还有其他选择:
- http://www.devarticles.com/c/a/MySQL/Using-Transactions-with-MySQL-4.0-and-PHP/
- https://stackoverflow.com/a/6461110/2812842
我偶尔不得不处理这个问题,尤其是在处理临时表时。使用 SQL 事务和/或简单地将每个查询拆分为单独的 PHP 语句即可达到目的。
关于php - 查询在 PHPmyadmin 中有效,但在 PHP 脚本中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22054231/