PHP Mysqli从JOIN返回数组(别名为数组键)

时间:2015-10-13 21:19:30

标签: php mysql arrays mysqli

好的,所以我有这个查询,它运行得很好,但它没有返回我想要的内容。

vowels = 'aeiou'
sentence = 'python is fun'
new_words = []

for word in sentence.split():
  if word[0].lower() in vowels:
    new_words.append(word+'way')
  else:
    new_words.append(word[1:3]+word[0]+word[3:]+'gar')

' '.join(new_words)

'ytphongar isway unfgar'

这将返回一个数组(在php中),其中键为0,所有列(来自两个表)都在同一个数组下。

我想要实现的是获得2个数组,1个包含第一个表中的列,另外1个包含第二个表中的列。

基本上我正试图从1个查询中获取多维数组。

2 个答案:

答案 0 :(得分:0)

读完行后将其拆分为两个数组。

$row = mysqli_fetch_assoc($query);
$acc = array($row['col1'], $row['col2'], ...);
$fin = array($row['col6'], $row['col7'], ...);

其中col1, col2 , ... are the columns from消费者, and col6 , col7 , ... are the columns from $ finances`。

在不列出所有列名的情况下执行此操作的方法是使用array_slice()

$row = mysqli_fetch_assoc($query);
$acc = array_slice($row, 0, $number_of_consumer_columns);
$fin = array_slice($row, $number_of_consumer_columns, $number_of_finances_columns);
$table3 = array_slice($row, $number_of_consumer_columns + $number_of_finances_columns, $number_of_table3_columns);

您可以对所有表格继续此操作。将它放入一个获取所有列计数数组的函数中会很简单,并返回一个包含每个表数据的二维数组。

答案 1 :(得分:0)

我想出了一个快速解决方案:

<?php

            $tableData = array( 'account'       =>  'consumers', 'finance'      =>  'consumers_finance', 'household'        =>  'consumers_household', 'media'          =>  'consumers_media', 'medical'        =>  'consumers_medical', 'shopping'     =>  'consumers_shopping', 'social'      =>  'consumers_social', 'technology'    =>  'consumers_technology', 'transport'     =>  'consumer_transport', 'b2b'         =>  'consumers_b2b', 'employment'   =>  'consumer_employment_status');

            $openAccount = array();

            foreach($tableData as $key => $table)
            {
                $whichWhere = $db->doQuery("SHOW COLUMNS FROM `$table` LIKE 'uid'");
                $whichWhere = (isset($whichWhere[0]['Field'])) ? 'uid' : 'id';

                $getDetails = $db->getArray("SELECT * FROM $table WHERE $whichWhere = '$userID'");

                if(isset($getDetails[0]))
                {
                    $openAccount[$key] = $getDetails[0];
                }
                else
                {
                    $getDetails = $db->doQuery("SHOW COLUMNS FROM `$table`");

                    foreach($getDetails as $column)
                    {
                        $openAccount[$key][$column[0]] = '';
                    }
                }
            }

?>

这将帮助我处理没有uid条目的表,这样我就不必对数组运行双重检查以避免未定义的索引。