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 COLUMNSMySQL のドキュメントによると、サブセレクト ステートメントは許可されません。

代わりに、元のクエリ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 に答える