php - 为什么我的 MySQL 查询返回多维数组而不是一维数组?

标签 php mysql sql arrays web-applications

这是我的查询:

SELECT DISTINCT ap.apptype_id
FROM tblSubmission AS s
JOIN tblApp AS ap ON ap.app_id = s.app_id
WHERE s.app_id =406
OR s.app_id =180
OR s.app_id =179

它只返回与数据库中的行有关的唯一 apptype_id。它现在像它应该的那样工作,除了它返回一个多维数组而不是一维数组这一事实。我可以继续写一个 PHP 函数来解决这个问题,但我宁愿让查询正确返回数组,而不是让服务器做额外的工作来解决查询问题。谁能帮帮我?

此外,如果有人看到我可以优化此查询以使其更快的方法,那也很棒!

function db_query($querystring) { 
   $rec_set = array(); 
   $result = mysql_query($querystring); 
   if (!$result) { 
       // do nothing, query might have failed but it might have just returned no results          
       #echo ("Invalid Query Result:<br /><b>" . $querystring . "</b><br />"); // debug 
    }elseif($result === true){ 
       // do nothing, query didn't return anything but succeeded 
    }else{ 
       while ($row = mysql_fetch_assoc($result)) { $rec_set[] = $row; }            
       mysql_free_result($result); 
    } 
    return $rec_set; 
  }

最佳答案

您要返回两条记录,所以它是多维的。

您有 DISTINCT ap.apptype_id 并且您的查询找到了两个具有不同 ID 的记录。

编辑:只是为了澄清;在你寻找的一维数组中我相信你想要的结果是:

array([7], [2]) // i.e your two distinct ids.

请记住,对于 mysql,您也会返回列标题,因此这种布局没有意义。

编辑 2:

也许这样的事情会有帮助?

$a = array(
    0 => array('first'=>7),
    1 => array('second'=>2)
);

$row = array_map('implode', $a);

输出:

array(2) { [0]=> string(1) "7" [1]=> string(1) "2" }

array_map 是您需要的函数。它应该可以按您的需要工作。

关于php - 为什么我的 MySQL 查询返回多维数组而不是一维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12918735/

相关文章:

php - 备份sql数据库出错但创建数据库转储文件成功

php - 更新mysql中的表列

PHP - PDO 引用是否免受 SQL 注入(inject)攻击?

php - 远程数据库连接

sql - 尝试编写查询以指定客户是否完成了特定列的两种类型

php - Yii2中年份大于指定月份,如何获取大于指定年份和月份的记录

PHP 特征公开方法和接口(interface)

mysql - 执行sql删除查询foreach user_id

php - 使用 PHP 和 MySQL 获取信息的最佳算法是什么

mysql - 使用 MySQL 中的用户定义变量从前一行获取值