我正在循环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>';
}
}
感谢任何帮助!
答案 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
}