php - 从 2 个以上的表中获取列,然后将它们插入到数组中

标签 php mysql arrays

我编写了一些代码来尝试从不同的表中获取多个列,并将它们连接在一起,然后将它们插入数组。当我在单个表和两个不同的表上执行此操作时,它有效,但是当我尝试对三个表执行此操作时,突然我得到的结果比我想象的要多。多很多。请看一下:

include('connect.php');

$arrayX = "pieces.pieceID,playerDeck.amount,playerPieces.amount/pieces, playerDeck,playerPieces/where playerDeck.playerName = 'playerName' and playerPieces.playerName = 'playerName' and pieces.name = playerDeck.name = playerPieces.name";

$arrayX = explode('/', $arrayX);
$column = $arrayX[0];
$table = $arrayX[1];
$where = $arrayX[2];

$myArray = explode(',', $column);

global $connect;
$fetch = mysqli_query($connect,"SELECT $column FROM $table $where");
$count = mysqli_num_rows($fetch);

while($row=mysqli_fetch_array($fetch,MYSQLI_NUM)){

  $count --;
  $arrayCount = count($myArray);

  while($arrayCount > 0){
  $arrayCount--;
  $array[$count][$arrayCount]= $row[$arrayCount];
  }

}

$count = count($array);
echo $count." rows";

预期输出:

32 rows

实际输出:

31744 rows

31,744/32 = 922。这意味着我得到了 922 个与我需要的行相同的副本。我不知道我到底做错了什么才能获得 922 份副本,也不知道这实际上是怎么可能的。如果有人能弄清楚我做错了什么,请指出。非常感谢。

最佳答案

请运行以下查询:

SELECT COUNT(*) FROM
pieces p INNER JOIN playerDeck pd
ON p.name = pd.name
INNER JOIN playerPieces pp
ON pd.name = pp.name
WHERE pd.playerName = 'playerName' AND
pp.playerName = 'playerName'

如果您得到 31744 行,您就会知道查询中的逻辑并不完全符合您的预期。

关于php - 从 2 个以上的表中获取列,然后将它们插入到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30794043/

相关文章:

php - 在运行时使用 env() 在 Symfony 3.2 中加载外部环境参数返回未解析的值

php - 将文本链接替换为带有 preg_replace 的链接

PHP 简单 DOMDocument 抓取排除 td 类

mysql - 如何创建一个转储 mysql 转储的 ant 任务?

java - 在 mysql 数据库表中反射(reflect)装饰器模式

php - 如何向 PhpStorm for MySQL 添加可接受的运算符?

java - java中数组中的重复数字给出错误的输出

python - Numpy 数组 : group by one column, 求和另一个

javascript - Angularjs JSON Unicode 字符

将 8 字节 char 数组转换为 long