我正在创建一个脚本,用于将数据从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)”。 我不知道为什么。
答案 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
,因为没有返回任何行。