我在某人的生日那天显示了一张照片 但我不知道在那里没有生日时我会收到一条消息。 通常我使用if和else代码,但我不知道在if。
中放什么<?php
$select = mysql_query("SELECT foto FROM `users` WHERE MONTH(gebdatum) = MONTH(NOW()) AND DAY(gebdatum) = DAY(NOW())");
while($row = mysql_fetch_array($select))
if(???????????){
?><?php echo $row['foto']; ?>" border="0" style="border:1px #000000 solid"><?php
}else{ ?>
No birthdays
<?php
}
?>
答案 0 :(得分:2)
要考虑的一个选择是添加循环计数器变量。
在while循环之前将计数器变量初始化为零。
然后每次通过循环将计数器变量增加1。
然后在循环之后,测试计数器变量。如果它为零,那么我们就没有进入循环。
这不一定是最好的方法,但它展示了我们应该熟悉的模式:
# initialize loop counter
$i = 0;
while( ... ) {
# increment loop counter
$i++;
...
}
# test loop counter
if( $i == 0 ) {
...
}
答案 1 :(得分:2)
首先,您不应该使用mysql_*
库; This is deprecated and insecure
我实际建议使用PDO
,因为在我看来它比mysqli_*
替代方案更灵活。
这是您使用PDO连接数据库的方式:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
现在您已连接,您有一个名为$conn
的新变量,称为数据库句柄。
现在,对于查询:
<?php
$results = $conn->query("SELECT foto FROM `users` WHERE MONTH(gebdatum) = MONTH(NOW()) AND DAY(gebdatum) = DAY(NOW())")->fetchAll();
if(!empty($results)) { //if results is empty, there are no results, so no birthdays.
foreach($results as $result) {
echo "{$result['foto']} border='0' style='border:1px #000000 solid'>'";
}
} else {
echo 'No Birthdays';
}
?>
因此,如果没有结果,上面的if
语句将失败,因此foreach
将永远不会运行。在PDO
中,您通常使用foreach而不是while循环。
如果您使用我制作的课程called GrumpyPDO,这会更容易一些,因为您不必担心数据库的连接部分,并且更容易返回所有您查询的结果:
<?php
include "grumpypdo.php";
$db = new GrumpyPDO("localhost", "username", "password", "database");
$db->all("SELECT foto FROM `users` WHERE MONTH(gebdatum) = MONTH(NOW()) AND DAY(gebdatum) = DAY(NOW())");
if(!empty($results)) { //if results is empty, there are no results, so no birthdays.
foreach($results as $result) {
echo "{$result['foto']} border='0' style='border:1px #000000 solid'>'";
}
} else {
echo 'No Birthdays';
}
?>
免责声明:我是GrumpyPDO的作者。
答案 2 :(得分:-6)
试试这个
<?php
$select = mysqli_query("SELECT foto FROM `users` WHERE MONTH(gebdatum) = MONTH(NOW()) AND DAY(gebdatum) = DAY(NOW())");
while($row = mysql_fetch_array($select))
if(!empty($row)){
<?php echo $row['foto']; ?>" border="0" style="border:1px #000000 solid">
}else{
No birthdays
<?php } ?>
另外,请不要使用PHP 5.6中的mysql,我们使用mysqli,现在,PHP v7就在那里。而且,你为什么写作