Php 如何使用mysqli判断列是否是主键?
我正在将一些代码从旧的mysql扩展转换为PHP中的mysqli扩展。之前,在mysql扩展中,我使用了一些类似这样的代码来查找表中的主键:Php 如何使用mysqli判断列是否是主键?,php,mysql,mysqli,primary-key,Php,Mysql,Mysqli,Primary Key,我正在将一些代码从旧的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+
while ($i < mysql_num_fields($result)) {
$meta = mysql_fetch_field($result, $i);
if ($meta->primary_key == 1){
$primary_key = $meta->name;
}
$i++;
}
当然,通过查看文档,我们可以看到mysqli中不存在$meta->primary_key
。我看到有一个$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;
}
}
您非常接近,需要
标志
属性
您要查找的标志是,这意味着:
字段是主索引的一部分
您可以使用以下方法测试此标志:
if ($meta->flags & MYSQLI_PRI_KEY_FLAG) {
//it is a primary key!
}
您在这里使用的是
&
。运行“descripetable_name
”查询?很好,这需要与数据库进行单独的事务处理,这是可行的。我更喜欢使用结果集中已经获得的信息。
if ($meta->flags & MYSQLI_PRI_KEY_FLAG) {
//it is a primary key!
}