Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook风格使用php和mysql显示用户生日_Php_Mysql - Fatal编程技术网

Facebook风格使用php和mysql显示用户生日

Facebook风格使用php和mysql显示用户生日,php,mysql,Php,Mysql,我正在尝试使用php创建一个facebook风格的用户birtyday函数。但是我有一个问题,我的代码没有得到任何结果。我做错了什么有人能帮我吗 及 您的php状况存在问题 试试下面的代码 foreach($birthDay as $data) { $birthUserFullname=$data['fullname']; $dbusername = $data['username']; $bd = $data['birth_month']."-".$data['

我正在尝试使用php创建一个facebook风格的用户birtyday函数。但是我有一个问题,我的代码没有得到任何结果。我做错了什么有人能帮我吗



您的php状况存在问题

试试下面的代码

 foreach($birthDay as $data) {
    $birthUserFullname=$data['fullname'];
    $dbusername = $data['username'];
    $bd = $data['birth_month']."-".$data['birth_day']; //concate month and day
        if ($bd == date('m-d')) {
       echo '<div class="birthdayUser">
    <div class="birthdayuser">
      <div class="birthday_icon"></div>
      <div class="birthdayUName"><a href="#">'.$birthUserFullname.'</a></div>
    </div>
   </div> ';
        }

 }
foreach($data为$data的生日){
$birthUserFullname=$data['fullname'];
$dbusername=$data['username'];
$bd=$data['birth\u month'].“-”$data['birth\u day'];//计算月份和日期
如果($bd==日期('m-d')){
回声'
';
}
}

主要问题在于select语句。不需要时,您可以在
MONTH()
/
DAY()
函数中包装比较中的列

SELECT uid,fullname,birth_day,birth_month,username 
FROM users 
WHERE MONTH(birth_month) = MONTH(NOW()) AND DAY(birth_day) = DAY(NOW())
您的列
birth\u month
包含月份的两位数表示
MONTH(NOW())
将返回该月份的两位数表示形式。因此,您不需要将列包装在
MONTH()
MySQL方法中。这同样适用于
出生日
比较

SELECT uid,fullname,birth_day,birth_month,username 
FROM users 
WHERE birth_month = MONTH(NOW()) AND birth_day = DAY(NOW())
此外,正如塔德曼在评论中指出的那样

警告:当使用mysqli时,您应该使用查询并将用户数据添加到查询中不要使用手动转义和字符串插值或串联来完成此操作,因为这样会创建严重的错误。意外未扫描的数据是一个严重的风险


我在这里重复这个建议,因为很多人会敦促你去听

执行$birthday的var_转储,并且您的帐户中没有用户名值query@Akin对不起,我补充了。没有任何问题如果您使用的是单数值(如
04
07
),那么您不需要在查询中使用
MONTH()
DAY()
MySQL函数。让我更清楚一点。你应该这样比较<代码>出生月份=月份(现在())和出生日期=天(现在())。您不需要在
MONTH()
/
DAY()
函数中包装这些列。就像@tadman所说的-如果你正确地存储了日期,这会更容易。谢谢你的回答和附件,我修复了SQL注入问题。所以我不明白为什么有人给我投票:)
SELECT uid,fullname,birth_day,birth_month,username 
FROM users 
WHERE MONTH(birth_month) = MONTH(NOW()) AND DAY(birth_day) = DAY(NOW())
SELECT uid,fullname,birth_day,birth_month,username 
FROM users 
WHERE birth_month = MONTH(NOW()) AND birth_day = DAY(NOW())