WHERE
キーの列の名前を必ずしも知らなくても、句の主キーを使用して行を選択する方法があるかどうか疑問に思っています。
私の提案するPHP関数は次のとおりです。
function getData($table,$key,$asarray=false) {
$sql = mysql_query("select * from `".$table."` where primary='".$key."'");
if( !$asarray) return mysql_fetch_assoc($sql);
$ret = [];
while($row = mysql_fetch_assoc($sql)) $ret[] = $row;
return $ret;
}
いくつかのメモ:
$table
コード内のリテラル文字列からのみ発生し、外部ソースから発生することはありません。- この質問の目的のために、
$key
すでに適切にエスケープされていると仮定します。 - 私は
mysql
PHP 5.4を使用しているので、PHP 5.5で廃止されてもかまいません。 - 同じ理由
$ret = []
で、配列を定義する完全に有効な方法です。前回の質問で、この構文が原因でコードが機能しないと人々が言っていたので、これを言います。
現在、私の現在の実際の作業コードには、テーブル名を対応する主キー フィールド名にマッピングする連想配列があります。INFORMATION_SCHEMA
これを行う自動化された方法があるかどうか、できればクエリを伴わない方法があるSHOW CREATE TABLE
かどうか疑問に思っていSHOW INDEXES
ます.