php - 查询在 PHPmyadmin 中有效,但在 PHP 脚本中无效

标签 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 脚本中无效

我可以 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 .

您还有其他选择:

我偶尔不得不处理这个问题,尤其是在处理临时表时。使用 SQL 事务和/或简单地将每个查询拆分为单独的 PHP 语句即可达到目的。

关于php - 查询在 PHPmyadmin 中有效,但在 PHP 脚本中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22054231/

相关文章:

javascript - 在没有 javascript 的情况下将模态内的表单数据传递到表单外的 Controller 按钮

mysql - sql中的连接顺序是什么

MYSQL考勤按考勤日期

来自 2 个不同表的值出现的 Mysql 百分比

mysql - 如何允许所有ip连接到我的sql数据库?

php - 任意页面的 Youtube Data API v3 pageToken

php - php内存中数组的大小

使用 URL 的 PHP LDAP 连接

php - pcntl_fork() 导致父进程失效

mysql - 使用 LIKE 列值匹配行