如果生日比照片还多,否则没有生日

tf7tbtn2  于 2021-06-23  发布在  Mysql
关注(0)|答案(3)|浏览(342)

我得到它,它显示了一张照片,当它与某人的生日是同一天,但我不知道我得到一个信息说,当没有生日。通常我使用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 
    }
 ?>
4dbbbstv

4dbbbstv1#

首先,你不应该使用 mysql_* 图书馆;这是不赞成和不安全的。
我建议用 PDO ,因为在我看来,它比 mysqli_* 另一种选择。

本地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的类,这会稍微容易一些,因为您不必担心数据库的conenction部分,而且从查询返回所有结果也会更容易:

<?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';
    }
?>

免责声明:我是格鲁门的作者。

3pvhb19x

3pvhb19x2#

试试这个

<?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 } ?>

另外,请不要像php5.6那样使用mysql,我们使用mysqli,现在有phpv7了。你为什么要写信

yduiuuwa

yduiuuwa3#

要考虑的一个选项是添加循环计数器变量。
在while循环之前将计数器变量初始化为零。
然后在循环中每次递增计数器变量1。
然后在循环之后,测试计数器变量。如果它是零,那么我们就没有进入循环。
这不一定是最好的方法,但它展示了一种我们应该熟悉的模式:


# initialize loop counter

$i = 0;

while( ... ) {
   # increment loop counter
   $i++;
   ...
}

# test loop counter

if( $i == 0 ) {
   ...
}

相关问题