1

複数の列を持つテーブルがあり、列名は将来変更できます。スクリプトが名前で列から選択するのではなく (情報が変更される可能性があるため)、列の位置で選択する方法はありますか?

たとえば、表の 2 番目の列を選択したいのですが、簡単にできますか?

これをしない理由は理解できますが、それでもやりたいと思っています。

4

5 に答える 5

3

簡単な解決策?ただSELECT * FROM table、 $row = でフェッチしてmysql_fetch_row()から読み込むと$row[1]、順番に「2列目」の内容になります(0から始まるので)。

もう少し専門的で必要なものだけを選択したい場合は、次のINFORMATION_SCHEMAようなクエリを使用してから 2 番目の列名を取得できます。

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'your database schema' AND TABLE_NAME = 'the wanted table name' AND ORDINAL_POSITION = 2;

しかし、本当にこれを正しい方法で行いたい場合は、鼻をどこに置くかを知ってください。テーブル構造が変更され、そのためにコードを調整する必要がある場合は、それで問題ありません。これは、それが行われるべき方法です。「機能している」ままにしておくと、潜在的に間違った情報に依存すると、後でさらに大きな問題が発生する可能性があります。

于 2013-03-31T04:43:54.773 に答える
0

PHP では、 を使用してクエリを実行できます$res = mysql_fetch_row($query)。次に、次の方法で 2 番目の列を取得できます$res[1]

于 2013-03-31T04:33:41.300 に答える
0

次の 3 つの例は、MySQL、MySQLi、および PDO を使用して 3 列目を印刷する方法を示しています。

MySQL

while ($row = mysql_fetch_array($query)) {
  print $row[2];
}

MySQLi

$sth->execute();
$sth->bind_result($var1, $var2, $var3);
while ($sth->fetch()) {
  print $var3;
}

PDO

$sth->execute();
while ($row = $sth->fetchAll()) {
  print $row[2];
}
于 2013-03-31T04:35:52.220 に答える
0

これは非常に悪い考えなので、解決策を提供したくありませんが、可能です。MySQL には、information_schemaクエリ可能な DDL データを格納する という名前のデータベースがあります。あなたが求めているのはCOLUMNS.ORDINAL_POSITION.

SELECT COLUMN_NAME FROM information_schema.COLUMNS
WHERE TABLE_NAME = ? AND ORDINAL_POSITION = ?

これにより、n 番目の列の名前が得られ、後続のクエリのフィールド リストで使用できます。これを単一のクエリで行うのは意味がありません。

于 2013-03-31T04:37:38.690 に答える