10

コードの一部を古いmysql拡張機能からPHPのmysqli拡張機能に変換しています。以前は、mysql拡張機能を使用して、次のようなコードを使用してテーブル内の主キーを検索していました。

while ($i < mysql_num_fields($result)) {
    $meta = mysql_fetch_field($result, $i);
    if ($meta->primary_key == 1){ 
        $primary_key = $meta->name; 
    }
    $i++;
}

$meta->primary_key == 1とても便利でした。

これまでのところ、mysqliを使用するコードに変換しました。

while ($i < $result->field_count) {
    $meta = $result->fetch_field;
    if ($meta->primary_key == 1){ 
        $primary_key = $meta->name; 
    }
    $i++;
}

もちろん、ここのドキュメントを見ると$meta->primary_key、mysqliには存在しないことがわかります。あることがわかります$meta->flags。これは私の最善の推測ですflagsが、主キーがある場合の値はわかりません。

mysqliを使用して、どの列がテーブルの主キーであるかを知る方法を知っている人はいますか?

ありがとう!

編集 ここにいくつかの動作するコードがあります:

//get primary key
$primary_key = '';
while ($meta = $result->fetch_field()) {
    if ($meta->flags & MYSQLI_PRI_KEY_FLAG) { 
        $primary_key = $meta->name; 
    }
}
4

1 に答える 1

9

あなたは非常に近かった、あなたはflagsプロパティが必要になります。

探しているフラグはです。これはMYSQLI_PRI_KEY_FLAG、次のことを意味します。

フィールドはプライマリインデックスの一部です

このフラグは、次のようにテストできます。

if ($meta->flags & MYSQLI_PRI_KEY_FLAG) { 
  //it is a primary key!
}

&ここでは、ビットごとのAND演算子として使用しています。

于 2012-07-11T14:47:56.447 に答える