如果生日比照片别的没有生日

时间:2018-05-25 12:35:04

标签: php mysql

我在某人的生日那天显示了一张照片 但我不知道在那里没有生日时我会收到一条消息。 通常我使用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 
    }
 ?>

3 个答案:

答案 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_*替代方案更灵活。

Native PDO

这是您使用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循环。

GrumpyPDO

如果您使用我制作的课程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就在那里。而且,你为什么写作