由于count(column_name)而获取资源而不是数字

时间:2013-10-08 14:54:22

标签: php postgresql

我正在尝试从表中获取列数:

$query = "select count(column_name) from information_schema.columns where table_name = '".$tableName."'";
$columns = pg_query($query);
echo $columns;

但不是数字我得到一个神秘的Resource id #61 转换为stringint等其他类型无济于事。

3 个答案:

答案 0 :(得分:1)

pg_query()返回资源,这是正确的行为。你可以用手册检查它(无论如何你应该做什么)。

要从该资源获取行,您可以使用pg_fetch_all()pg_fetch_row()等函数。阅读两者并决定哪一个会更好。

答案 1 :(得分:1)

pg_query向查询结果返回资源,为了获取实际行,您可以使用pg_fetch_*个函数,例如pg_fetch_assoc

所有这些都有详细记录on php.net/pg_query。查看函数的签名:

resource pg_query ([ resource $connection ], string $query )
//return type function name (params)

因此,您需要的是:

$result = pg_query($query);
$columns = pg_fetch_all($result);
var_dump($columns);

另外,请养成将连接资源明确地传递给pg_query调用的习惯...当处理具有多个连接的大型项目时,无法确定您正在使用什么连接。

答案 2 :(得分:-1)

你可以试试这个

$query = "SHOW COLUMNS FROM '".$tableName."' ";
$result= pg_query($query);

if (!$result) {
  echo "An error occurred.\n";
  exit;
}
$i = 1;
while ($row = pg_fetch_row($result)) {
  echo "Column[$i] names: ".$row[0]."";
  echo "<br />";
  $i++;
}

echo "Column Count: ".$i;