mysql_fetch_array / mysqli_fetch_array - 第一次调用时的行为差异(php)

时间:2017-01-15 13:44:43

标签: php mysql mysqli

我(我非常姗姗来迟)将我的一些代码从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

**这个条款立即开始**

如果在发生这种情况时立即上行 - 这笔费用已从第二次记录开始。

$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,在while循环中使用循环测试$ record然后额外$ record = mysqli_fetch_array,然后在while循环中结束大括号)但我急于理解行为上的差异,这样我就不会遇到任何其他陷阱。

任何人都可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

没有区别。

两种功能在各种可能的方式都表现得相同。

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