pg_fetch_assoc返回布尔值

时间:2015-11-24 12:29:55

标签: php mysql postgresql

我正在创建一个脚本,用于将数据从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)”。 我不知道为什么。

2 个答案:

答案 0 :(得分:0)

因为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这样的适当调试器来避免编写像这样的代码

答案 1 :(得分:0)

你不能像SELECT true FROM res_partner WHERE id = $customer_id这样做,以免进行while循环吗?

然后,如果存在单行值true,则会得到一行,或者false,因为没有返回任何行。