我尝试获取一组ID的是由于在接下来的7天内到期,以及对我的生活不能得到我的查询工作MySQL查询发现日期小于其他日期
$target_date = date('Y-m-d', strtotime('+7 days'));
$sql = "SELECT subscriptions.`id` FROM subscriptions WHERE date($target_date) <= expires AND cust_id =$_SESSION[uid]";
任何将不胜感激
我尝试获取一组ID的是由于在接下来的7天内到期,以及对我的生活不能得到我的查询工作MySQL查询发现日期小于其他日期
$target_date = date('Y-m-d', strtotime('+7 days'));
$sql = "SELECT subscriptions.`id` FROM subscriptions WHERE date($target_date) <= expires AND cust_id =$_SESSION[uid]";
任何将不胜感激
这是罚款:
$target_date = date('Y-m-d', strtotime('+7 days'));
由于它的结构以相同的方式将日期作为MySQL的[YYYY-MM-DD]
我已经关掉您的查询各地和应用DATE()
功能的“过期”字段和不是你$target_date
,因为它并不需要。您的到期场可能会在[YYYY-MM-DD HH:MM:SS]
格式,这可能是为什么它不工作:
$sql = "
SELECT subscriptions.id
FROM subscriptions
WHERE DATE(expires) >= '$target_date'
AND cust_id = '$_SESSION[uid]'";
回声出$sql
查询,以找出是否其正常运行,并使用or die(mysql_error());
告诉你在哪里它的失败。
使用SQL转义过(无论是PDO或mysqli的),如已在另一个答案被列出。
希望这会有所帮助。
感谢所有谁回答说,这个整理我的问题,也感谢tadman,看起来英迪SQL逃逸 –
如果您创建一个大致MySQL兼容格式的日期,它应该工作,而不必使用DATE
函数,只是比较它就好像它是一个字符串。
你的代码是迫切需要的一些适当的SQL escaping会解决这个问题,可能是一个令人担忧的大量其他的应用程序中。
在PDO查询运行或mysqli
将大致如下:
$target_date = date('Y-m-d', strtotime('+7 days'));
$sql = "SELECT subscriptions.`id` FROM subscriptions WHERE ?<=expires AND cust_id=?";
然后,您可以调用相应的bind_param
方法在正确的价值观链接到这些占位符。
您可以与MySQL做到这一点:
SELECT subscriptions.`id` FROM subscriptions WHERE date_add(curdate(),interval 7 day) <= expires AND cust_id =$_SESSION[uid]
你存储的日期作为时间戳或Unix时间戳,我这么问是因为我看到了这里:'的strtotime('+ 7天)' –