【问题标题】:mysql_fetch_array / mysqli_fetch_array - difference in behaviour on first call (php) [duplicate]mysql_fetch_array / mysqli_fetch_array - 第一次调用时的行为差异(php)[重复]
【发布时间】:2017-01-15 13:44:43
【问题描述】:

我只是(我知道很晚才知道)将我的一些代码从 mysql 更新到 mysqli,我注意到 fetch_array 函数的行为似乎发生了变化。

我们无意通过截断原始问题中的代码来混淆视听,但如果有帮助的话,可以更全面地了解实际代码。

使用:MYSQL

此步骤通过表格中从头到尾的每个合格记录

$con_head = mysql_connect($domain,$head_dbname,$head_dbpassword);
if (!$con_head)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db($head_dbname, $con_head);


$src_sql = "Select * from SEQUENCES where SEQUENCE_TYPE = 'N' and REVIEWED ='N' order by SEQ_START";
$src_tb = mysql_query($src_sql, $con_head);

while ($src_rec = mysql_fetch_array($src_tb))
{
    ..... statements here have no relevance to the problem

}

使用 MYSQLI

**这立即跳过了 WHILE 子句**

如果前面的行未注释,则从第二条记录开始。

$con_head = mysqli_connect("$domain,$head_dbname,$head_dbpassword,$head_dbname); // database name and user name are the same
if (!$con_head)
  {
  die('Could not connect: ' . mysqli_error());
  }
    $src_sql = "Select * from SEQUENCES where SEQUENCE_TYPE = 'N' and REVIEWED ='N' order by SEQ_START ";
$src_tb = mysqli_query($con_head, $src_sql);
//  $src_rec = mysqli_fetch_array($src_tb,MYSQLI_BOTH);
while ($src_rec = mysqli_fetch_array($src_tb,MYSQLI_BOTH))
{
    ..... statements here have no relevance to the problem

}           

这在 mysql 下可以正常工作,但在 mysqli 下的等效项立即无法通过“while”测试。

我已经检查过代码是否正常,通过在开始循环之前插入一个额外的 mysqli_fetch_array,这工作正常 - 尽管因此从 SECOND 记录开始处理。

很明显,我可以重写我的代码以以不同的方式循环(例如,在循环之前有 $record = mysqli_fetch_array,在循环中测试 $record,然后在 while 循环的结束大括号之前有一个额外的 $record = mysqli_fetch_array)但我急于了解行为上的差异,以免陷入任何其他陷阱。

谁能解释一下?

【问题讨论】:

  • 您需要发布与mysqli_ 函数完全一致的内容。这是错误的mysql_query($con,$sql)
  • 您发布的这段代码;不含水
  • "mysqli 下的等价物" — 什么等价物?向我们展示一个 minimal reproducible example 来演示问题,而不是一些您知道没有的代码。
  • 请发布您运行的真实代码,不要任何编辑。
  • 好的,抱歉——我并不想遗漏任何内容。我已经用展示不同行为的确切代码更新了上述内容。

标签: php mysql mysqli


【解决方案1】:

没有区别。

这两个函数在所有可能的方面表现相同。

您可能注意到的任何差异都是由您自己的某种错误造成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-01
    • 2012-10-23
    • 2012-09-04
    • 2014-05-14
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 2015-10-29
    相关资源
    最近更新 更多