2017-07-22 58 views
0

我有一個名爲event的表,它包含五個列:event_id,Date,timing,event_type_id和capacity。mysql查詢以不同格式獲取特定日期的數據

我試圖從那裏日期列的格式毫米特定日期相匹配的表事件得到記錄/ DD/YYYY

這裏是我的PHP代碼:

<?php 


$con=mysqli_connect("localhost","root","simple","eventsdb"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

if(isset($_GET['date'])) 
{ 
$when = $_GET['date']; 
} 
else{ 
$when = date("d/m/Y"); 
} 

echo $when; 

$sql="SELECT Event_id, Date, Capacity FROM event where DATE('Date')='$when'"; 

if ($result=mysqli_query($con,$sql)) 
{ 
// Fetch one and one row 
while ($row=mysqli_fetch_row($result)) 
{ 
printf ("%s %s %s <br>",$row[0],$row[1],$row[2]); 
} 
// Free result set 
mysqli_free_result($result); 
} 

mysqli_close($con); 
?> 

我覺得這是sql語句出錯,因爲它返回所有記錄,即使是那些不匹配日期值的記錄

任何幫助將不勝感激。

+0

我懷疑你的查詢失敗,但你沒有檢查錯誤,也懷疑你的日期列類型不匹配傳入的數據。然而,我們不知道模式是什麼。 –

+1

'Date'是一個保留字,所以我懷疑這個查詢在列名字周圍沒有'\''的情況下運行。 – Jeff

+1

也不應該用於比較日期的格式爲'yyyy-mm-dd'? – Jeff

回答

2

從上面的例子中,應該寫出sql語句的問題。

問題SQL:

$sql="SELECT Event_id, Date, Capacity FROM event where DATE('Date')='$when'" 

請更改爲以下幾點:

$sql="SELECT Event_id, Date, Capacity FROM event where DATE(Date)='$when'" 

也許它可以工作,請嘗試。在你的情況下,DATE('Date')將返回NULL,當返回值爲NULL時,它將作爲條件比較失效,這與無查詢條件類似或等價於where 1 = 1,正如通過返回所有記錄所述。

+0

這對我有效。非常感謝 – twobits

相關問題