我正在编写一个脚本,以将数据从mysql数据库插入/更新到postgres数据库。

if ($result->num_rows > 0)
{
  while($row = $result->fetch_assoc())
  {
    $postgres = "SELECT * FROM res_partner";
    echo $postgres . "\n";
    $pgresult = pg_query($db,$postgres);

    $a = 0;

    if(pg_num_rows($pgresult) > 0)
    {
      while($pgrow = pg_fetch_assoc($pgresult))
      {
        if($pgrow["id"] == $row["customer_id"])
        {
          $a + 1;
        }
        else
        {
          $a + 0;
        }
      }
      var_dump($pgrow);
      exit();


我想检查mysql数据库中的id是否也在postgres数据库中。
但是$ pgrow用我的var_dump返回“ bool(false)”。
我不知道为什么。

最佳答案

因为var_dump()在while循环之外。

循环将继续调用pg_fetch_assoc,直到返回false

将调用放在循环内以查看当前行的内容:

while($pgrow = pg_fetch_assoc($pgresult))
{
    if($pgrow["id"] == $row["customer_id"])
    {
        $a + 1;
    }
    else
    {
        $a + 0;
    }
    var_dump($pgrow);
}


或使用诸如XDebug之类的适当调试器来避免编写此类代码

关于php - pg_fetch_assoc返回 bool 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33893774/

10-11 05:13