我嘗試獲取一組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天)' –