无法通过while循环PHP检索数据

时间:2015-03-10 05:18:49

标签: php mysql while-loop

我正在循环MySQL结果,但我遇到了一个问题。问题是只有我的第一个if语句正在执行。我的if语句的其余部分返回空字符串。令我困惑的是:当我在while循环中删除第一个if语句时,下一个if语句将返回数据,但下面的所有其他语句都不会。这是我的相关代码:

// Get Addresses
$queryAddresses  = "SELECT * FROM contact_addresses WHERE contact_id = $contactID";
$resultAddresses = mysqli_query($dbc, $queryAddresses);
$numAddresses    = mysqli_num_rows($resultAddresses);

if ($numAddresses >= 1) {
    $address_labels = '';
    $addresses      = '';
    while ($address = mysqli_fetch_array($resultAddresses, MYSQLI_ASSOC)) {
        $address_labels .= $address['label'].'<br>';

        if (!empty($address['address'])) {
            $address = $address['address'].', ';
        } else {
            $address = '';
        }

        /* ALL OF THE IF STATEMENTS BELOW THIS LINE RETURN EMPTY STRINGS EVEN THOUGH THE INFORMATION IS STORED IN THE DATABASE.  */
        if (!empty($address['address_two'])) {
            $address_two = $address['address_two'].', ';
        } else {
            $address_two = '';
        }

        if (!empty($address['city'])) {
            $city = $address['city'].', ';
        } else {
            $city = '';
        }

        if (!empty($address['state'])) {
            $state = $address['state'].', ';
        } else {
            $state = '';
        }

        if (!empty($address['zip'])) {
            $zip = $address['zip'].', ';
        } else {
            $zip = '';
        }

        if (!empty($address['country'])) {
            $country = $address['country'].', ';
        } else {
            $country = '';
        }

        $addresses .= $address.''.$address_two.''.$city.''.$state.''.$zip.''.$country.'<br>';
    }
}

感谢任何帮助!

4 个答案:

答案 0 :(得分:1)

使用行$address = $address['address'].', ';,您将用新字符串替换$address数组并清除该数组。尝试更改字符串变量名称:

    if (!empty($address['address'])) {
        $address_one = $address['address'].', ';
    } else {
        $address_one = '';
    }

    if (!empty($address['address_two'])) {
        $address_two = $address['address_two'].', ';
    } else {
        $address_two = '';
    }

    if (!empty($address['city'])) {
        $city = $address['city'].', ';
    } else {
        $city = '';
    }

    if (!empty($address['state'])) {
        $state = $address['state'].', ';
    } else {
        $state = '';
    }

    if (!empty($address['zip'])) {
        $zip = $address['zip'].', ';
    } else {
        $zip = '';
    }

    if (!empty($address['country'])) {
        $country = $address['country'].', ';
    } else {
        $country = '';
    }

    $addresses .= $address_one.''.$address_two.''.$city.''.$state.''.$zip.''.$country.'<br>';

答案 1 :(得分:0)

while ($address = mysqli_fetch_array($resultAddresses, MYSQLI_ASSOC)) {
    $address_labels .= $address['label'].'<br>';

    if (!empty($address['address'])) {
        $address = $address['address'].', ';
    } else {
        $address = '';
    }
}

我在查看代码时发现的是,您对while循环以及第一个if语句使用相同的变量$address。尝试更改循环变量,例如$result并尝试

答案 2 :(得分:0)

Plz paste following Code in your editor:
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "databasename";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        //echo "id: " . $row["id"]. " - Name: " . $row["first_name"]. " " . $row["last_name"]. "<br>";
        $fnanem ="";
        $lnanem ="";
        if(!empty($row["first_name"])){
            $fnanem = $row["first_name"];
        }else{
            $fnanem = "";
        }

        if(!empty($row["last_name"])){
            $lnanem = $row["last_name"];
        }else{
            $lnanem = "";
        }

        echo $fnanem."---->".$lnanem."<br>";
    }
} else {
    echo "0 results";
}
$conn->close();

答案 3 :(得分:0)

在下面的代码中更改变量,因为它通过赋值来替换数组的值。

 if (!empty($address['address'])) {
        $address = $address['address'].', ';//Chang variable name here
    } else {
        $address = '';//Chang variable name here
    }