それぞれが異なる名前の主キーを持つ10個のデータベーステーブルがあります
主キーに基づいてすべてのデータを取得するために、PHP で単一の関数を作成したいと考えています。
すなわち
function getdatabyid("table_name",primary_key_value)
これらの 2 つの変数を関数に送信すると、そのテーブルの主キーと照合され、データが返されるようにクエリを作成したいと考えています。
事前に感謝します
それぞれが異なる名前の主キーを持つ10個のデータベーステーブルがあります
主キーに基づいてすべてのデータを取得するために、PHP で単一の関数を作成したいと考えています。
すなわち
function getdatabyid("table_name",primary_key_value)
これらの 2 つの変数を関数に送信すると、そのテーブルの主キーと照合され、データが返されるようにクエリを作成したいと考えています。
事前に感謝します
function getdatabyid($table,$pk) {
$result = pg_query("SHOW COLUMNS FROM ". $table);
if (pg_num_rows($result) > 0) {
while ($row = pg_fetch_assoc($result)) {
$result = pg_query("SELECT * FROM ". $table ." WHERE ". $row['Field'] ." = ". $pk ." LIMIT 1");
if(pg_num_rows($result) > 0) {
return $result;
}
else return false;
}
}
else die('Incorrect table name.');
}
}
主キーの列名を取得するクエリは次のとおりです。
SELECT cu.CONSTRAINT_NAME, cu.COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE cu
WHERE EXISTS ( SELECT tc.* FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
WHERE tc.TABLE_SCHEMA = 'YOUR_TABLE_SCHEMA'
AND tc.TABLE_NAME = 'YOUR_TABLE_NAME'
and TC.CONSTRAINT_TYPE='PRIMARY KEY'
AND tc.CONSTRAINT_NAME = cu.CONSTRAINT_NAME
)
次に、別のクエリを実行して実際の結果を取得します。これはまだかなり非効率的です - 主キー名を引数として与える方が良いでしょう。