pg_fetch_assoc返回布尔值


pg_fetch_assoc returns boolean

我正在制作一个脚本,将数据从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,直到返回错误

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

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

或者使用适当的调试器(如XDebug)来避免编写类似的代码

你不能做一些类似SELECT true FROM res_partner WHERE id = $customer_id的事情,这样就不会做while循环吗?

然后,如果存在具有单个值true的一行,或者由于没有返回任何行而获得false