【问题标题】:Subquery in php functionphp函数中的子查询
【发布时间】:2014-03-20 23:12:06
【问题描述】:

我的数据库中有两个表(phpmyadmin)。我想获取 table1 中的 user1 并使用 php 中的函数将其与 table2 中的 user2 进行比较。这不是我需要比较的主键。我怎么可能做到这一点?
我可以这样做吗?

    public function userreservationdata($table,$table2)
    {
        $q = "SELECT user FROM $table WHERE user =(SELECT sname FROM $table2 WHERE sname=:sname) ";
        $stmt = $this->con->query($q);
        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
        return $result;
    }

此代码假定输出结果。(来自不同的文件)

$reservations = $code->userreservationdata("user_list","reserve_list");

谢谢你。

【问题讨论】:

  • 为什么不使用 INNER JOIN ?
  • 另外一件事,当你写这样的子查询时,通常你不会在主查询的 where 子句中使用“=”,它必须是“IN”,因为子查询可以返回超过一排。 (在您的情况下,发生这种情况的可能性很大,因为 sname 不是唯一的)

标签: php oop pdo


【解决方案1】:

这会奏效。

 SELECT user FROM table1 t1 INNER JOIN table2 t2 ON t1.user=t2.user

【讨论】:

  • 它不会获取致命错误:在非对象上调用成员函数 fetchAll()
  • 您必须将 table1 和 table2 替换为您要使用的内容,并确保两个表都有一个名为 user 的列或将其更改为
  • 是的,他们将在这里更改 $reservations = $code->userreservationdata("user_list","re​​serve_list");
  • 在执行前回显您的查询,看看它是否是有效的 SQL 查询
猜你喜欢
  • 2014-07-28
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多