PHP MySQLi while循环逻辑

时间:2014-05-09 23:02:47

标签: php mysqli while-loop

我已切换到PHP的mysqli_扩展名,我遇到了一些问题。

我有2个数据库。 1数据库我只允许读权限,另外我拥有所有权限。我的最终目标是从数据库1中读取我需要的内容,并将其放在数据库2的表中。

我在数据库1上使用连接来获取我需要的所有信息。然后我用while循环遍历结果。我在两个数据库中都有一个唯一的id(domainid)。我遇到问题的地方是在while循环中,一旦我从只读数据库获得domainid,我需要检查它是否存在于我的all-privileges数据库中。我只是不确定如何做到这一点?

以下是代码:

require 'db/connect.php';
require 'db/connect2.php';

if($result = $db->query("
    SELECT  tblhosting.domain as domain, tblhosting.id as domainid, tblclients.email as email
    FROM tblhosting
    LEFT JOIN tblclients ON
    tblclients.id = tblhosting.userid
    ")){
    if ($count = $result->num_rows) {
        while($row = $result->fetch_object()){
            $domainid = $row->domainid;
            $domain = $row->domain;
            $email = $row->email;

            $result2 = $db2->prepare("SELECT domainid FROM information WHERE domainid = ?");
            $result2->bind_param('i', $row->domainid);
            $result2->execute();
            $result2->bind_result($domainid2);
            //$result2->fetch();

            while($row2 = $result2->fetch_object()){                
            $domainid2 = $row2->domainid;
            if ($domainid == $domainid2) {
                echo "Information exists in both Databases", '<br>';
            }

            else{
                echo "New Information Added to Database 2", '<br>';

            }
        }
        }
    }   
}

这是我尝试过的,但没有成功。

修改

第二次尝试将结果放入数组然后循环遍历它们。打印出来时,数组是正确的。问题在于第二个execute();命令。

$result = $db->query("
        SELECT  tblhosting.domain as domain, tblhosting.id as domainid, tblclients.email as email
        FROM tblhosting
        LEFT JOIN tblclients ON
        tblclients.id = tblhosting.userid
        ");

        $domainid_arr = array();    
        while($row = $result->fetch_object()){
            $domainid_arr[] = array(
                'domainid' => $row->domainid,
                'domain' => $row->domain
            );  
        }

        foreach ($domainid_arr as $d) {
            echo $d['domainid'], $d['domain'], '<br>';

            $result2 = $db2->prepare("SELECT domainid FROM information WHERE domainid = ?");
            $result2->bind_param('i', $d['domainid']);
            $result2->execute();
            $result2->bind_result($domainid2);

            while($row2 = $result2->fetch_object()){                
                $domainid2 = $row2->domainid;
                if ($d['domainid'] == $domainid2) {
                    echo "Information exists in both Databases", '<br>';
                }
                else{
                    echo "New Information Added to Database 2", '<br>';

                }
            }

        }

0 个答案:

没有答案