Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 无法在语句的表结果集中绑定限制值_Mysql_Sql_Join - Fatal编程技术网

Mysql 无法在语句的表结果集中绑定限制值

Mysql 无法在语句的表结果集中绑定限制值,mysql,sql,join,Mysql,Sql,Join,我有以下返回所有用户…从所有计算机。。。特定用户帐户的名称。很好,但我想在computers表上按computers.computer\u id ASC LIMIT 0排序, 我对连接相当陌生,但在过去一天左右的时间里,我很快就学会了连接,但不确定涉及连接时表上的具体条件 这个想法是说帐户中有20台计算机。。。我仅将其限制为前10个,例如,按照asc顺序,通过其计算机id。。。这反过来只会留下加入这10台计算机的用户,然后留下加入该计算机上的帐户 $stmt = $db->prepare(

我有以下返回所有用户…从所有计算机。。。特定用户帐户的名称。很好,但我想在computers表上按computers.computer\u id ASC LIMIT 0排序,

我对连接相当陌生,但在过去一天左右的时间里,我很快就学会了连接,但不确定涉及连接时表上的具体条件

这个想法是说帐户中有20台计算机。。。我仅将其限制为前10个,例如,按照asc顺序,通过其
计算机id
。。。这反过来只会留下加入这10台计算机的用户,然后留下加入该计算机上的帐户

$stmt = $db->prepare("
    SELECT users.*
    FROM computers
        LEFT JOIN users
            on users.computer_id = computers.computer_id
        LEFT JOIN accounts
            on accounts.account_id = computers.account_id
    WHERE accounts.account_id = ?
");

$stmt->execute(array($_SESSION['user']['account_id'], **limit value goes here**));

// return array
$array = $stmt->fetchAll(PDO::FETCH_ASSOC);
编辑:

作为对奥利下面回答的回应。。。我猜我在这里做错了什么,因为虽然它不会产生任何错误,但也不会产生任何结果

$stmt = $db->prepare("
    SELECT users.*
    FROM (
            SELECT * FROM computers ORDER BY computer_id ASC LIMIT 0, ?
            ) as c
        LEFT JOIN users
            on users.computer_id = c.computer_id
        LEFT JOIN accounts
            on accounts.account_id = c.account_id
    WHERE accounts.account_id = ?
");

$stmt->execute(array($_SESSION['user']['account_id'], $_SESSION['user']['licenses']));

// return array
$array = $stmt->fetchAll(PDO::FETCH_ASSOC);
绑定值很好,有数据要返回,正如我的原始语句所确认的。。。因此,这与声明本身有关

问题:

我已经把范围缩小到极限了。。。如果我手动输入限制0, 无论声明中的内容如何,它都是有效的。如果我输入限制0?当我绑定值时,它返回null。有什么想法吗


你需要的诀窍是:

您可以在
中的任何位置说
table
,选择。。。从表t
中,您还可以说

 SELECT ...
   FROM (
         /* some valid query */
         ) AS t
所以你需要

  SELECT ...
    FROM (
          SELECT * FROM computers ORDER BY computer_id ASC LIMIT 0,?
          ) AS t
    LEFT JOIN  (whatever)
也就是说,可以在命名表的任何位置命名物理表或虚拟表(查询的结果集)


这就是结构化查询语言被称为结构化查询语言的原因

谢谢你的回复,但我一定是做错了什么,因为根本没有结果。。。但是没有错误。似乎是(计算机)中的绑定问题。。。如果我在语句中手动输入限制,但不使用绑定,则有效。