mysql_field_name 到新的 mysqli

Posted

技术标签:

【中文标题】mysql_field_name 到新的 mysqli【英文标题】:mysql_field_name to the new mysqli 【发布时间】:2013-01-15 18:45:51 【问题描述】:

我有一种方法可以获取表格列的名称。它工作正常,但现在我想更新到新的 mysqli ? (我试过 mysqli_fetch_field 但不知道如何应用到这种情况下,我不确定它是否是 wright 选项)

如何用 mysqli 做同样的事情? :

$sql = "SELECT * from myTable";
$result = mysql_query($sql,$con);
$id = mysql_field_name($result, 0);
$a = mysql_field_name($result, 1);

echo $id;
echo $a;

【问题讨论】:

如果你要使用mysqli,所有的功能都需要转换成它。 mysql和mysqli不能混用。 mysql_field_name 已经是古老且无法使用的方式。顺便说一句,你为什么需要它们? 这就是问题所在:如何全部转换成新的mysqli 你的目标是什么?你需要什么字段名? 如果你使用mysqli_fetch_assoc来获取数据,你会得到数组中的字段名称,所以你不需要单独查询它们。此外,在查询中列出您想要的字段通常被认为是一种很好的做法;即使用SELECT fieldname, fieldname, etc 而不是SELECT *。如果您这样做,您将已经知道结果中有哪些字段,因此您根本不需要查看字段列表。 【参考方案1】:

您可以将函数 mysql_field_name 替换为 mysqli_fetch_field_direct 并像下面这样使用它:

$colObj = mysqli_fetch_field_direct($result,$i);                            
$col = $colObj->name;
echo "<br/>Coluna: ".$col;

【讨论】:

这应该是正确的答案。它几乎与 mysql_field_name 相同,只是您必须取消引用名称: $id = mysql_field_name($result, 0) => $id = mysqli_fetch_field_direct($result, 0)【参考方案2】:

这是打印每个字段的名称、表格和最大长度的另一种简单方法

$sql="SELECT Lastname,Age FROM Persons ORDER BY Lastname";

if ($result=mysqli_query($con,$sql))

   // Get field information for all fields
   while ($fieldinfo=mysqli_fetch_field($result))
   
      printf("Name: %s\n",$fieldinfo->name);
      printf("Table: %s\n",$fieldinfo->table);
      printf("max. Len: %d\n",$fieldinfo->max_length);
   
   // Free result set
   mysqli_free_result($result);

【讨论】:

【参考方案3】:

这是实现这个缺失功能​​的方法:

function mysqli_field_name($result, $field_offset)

    $properties = mysqli_fetch_field_direct($result, $field_offset);
    return is_object($properties) ? $properties->name : null;

【讨论】:

这是根据the documentation 中的弃用通知的正确答案,但原始函数在失败时返回 False,而不是 null。你不应该放弃三元运算符并返回 $properties->name; ? 只需将null改为false即可。【参考方案4】:

我不确定是否有更好的方法来做到这一点,但我检查了这是否可以获取列的名称并且是新的 mysqli :

$result = mysqli_query($con, 'SELECT * FROM myTable');
while ($property = mysqli_fetch_field($result)) 
    echo $property->name;

【讨论】:

【参考方案5】:
$sql = "SELECT * from myTable";
$res = mysqli_query($con,$sql);
$row = mysqli_fetch_assoc($res);
$fields = array_keys($row);
var_dump($fields);

【讨论】:

对不起,我是 php 新手,我不明白你的答案。我怎样才能像我给出的例子一样只选择字段的标题。

以上是关于mysql_field_name 到新的 mysqli的主要内容,如果未能解决你的问题,请参考以下文章

mysql物理备份

切换到新的 ViewController 后,搜索栏不会消失

尝试将 mamp 移动到新的 mac

将应用数据迁移到新的 IOS 应用

Swift:使用按钮导航到新的 ViewController

将旧版 Admob 移动到新的 Admob 帐户后,是不是必须使用新的广告单元 ID 更新我的应用