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的主要内容,如果未能解决你的问题,请参考以下文章
切换到新的 ViewController 后,搜索栏不会消失