0

我正在寻找填充查询中正在查看的所有列的数组让我们说

    $sql='SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count
    FROM tutorials_tbl a, tcount_tbl b
    WHERE a.tutorial_author = b.tutorial_author';


    function getColoumns($sql) {
         $result = mysql_query("SHOW COLUMNS FROM (". $sql."));
  if (!$result) {
    echo 'Could not run query: ' . mysql_error();
  }
  $fieldnames=array();
  if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
      $fieldnames[] = $row['Field'];
    }
  }

  return $fieldnames;
    }

我似乎无法正确处理。任何可以帮助我的人。提前致谢。

4

1 回答 1

1

SHOW COLUMNS根据MySQL 文档,不允许 subselect 语句。

您可以改为使用原始查询的组合,mysql_num_fields()并且mysql_field_name()

function getColoumns($sql) {
  $result = mysql_query( $sql );
  if (!$result) {
    echo 'Could not run query: ' . mysql_error();
    // return from function here. don't know what value you need.
    return array()
  }

  $fieldnames = array();
  $fieldCount = mysql_num_fields($result);
  for( $i=0; $i<$fieldCount; $i++ ) {
    $fieldnames[] = mysql_field_name( $result , $i );
  }

  return $fieldnames;
}

此外,看看为什么我不应该在 PHP 中使用 mysql_* 函数?和/或确保查询不是恶意的!

于 2013-07-31T13:16:30.110 回答