【问题标题】:Why does my query to array return an array of objects in PHP?为什么我对数组的查询在 PHP 中返回一个对象数组?
【发布时间】:2012-11-04 02:43:31
【问题描述】:

我试图简单地运行一个查询并在一个数组中获取结果:

function run_query($query)
{
    $out = '';
    $db = new PDO("mysql:host=localhost;dbname=test","test","test");
    $out = $db->query($query)->fetchAll(PDO::FETCH_OBJ);
    return $out;
}

在另一端:

$l_o_array = $php_functions->run_query('SHOW TABLES');
$temp = implode(',', $l_o_array);

结果:可捕获的致命错误:stdClass 类的对象无法转换为字符串

我认为这是因为我使用了FETCH_OBJ,但是我用什么来获取字符串数组?

【问题讨论】:

  • PDO::FETCH_ASSOC 将在您使用 fetchAll 时获取数组数组。

标签: php mysql


【解决方案1】:

你可以这样做:

function run_query($query)
{
    $out = '';
    $db = new PDO("mysql:host=localhost;dbname=test","test","test");
    $out = $db->query($query)->fetchAll();
    return $out;
}

$results = run_query('SHOW TABLES');

$tables = array();
foreach($results as $result)
    $tables[] = $result['Tables in test']; // Note, replace "test" with your database name

$temp = implode(',', $tables);

【讨论】:

  • 我正在尝试在函数中动态构建数组。我希望它能够处理像“显示表格”这样简单的事情,但也可以处理像“SELECT * FROM foo”这样更复杂的事情,其中​​ foo 可能有多个列和行。
  • 为了获得一个“字符串数组”,您必须迭代结果(这是一个数组数组)并拉出相关列。如果你对数组数组没问题,你只需要返回fetchAll() 的结果。有意义吗?
  • 好的,这就是我现在所拥有的,但元数据不适用于 PDO。有什么建议么? function run_query($query) { $out = ''; $db = new PDO("mysql:host=localhost;dbname=test","test","test"); $out = $db -> query($query); $md = $out -> result_metadata(); $out = $out -> fetchAll(); $fields = $md -> fetch_fields(); $tables = array(); foreach ($fields as $field) foreach($results as $result) $tables[] = $result[$field]; return $tables; }
【解决方案2】:

试试 print_R();

理解问题

<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
print_r ($a);
?>

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2020-08-06
    • 2012-09-06
    • 1970-01-01
    • 2012-10-09
    相关资源
    最近更新 更多