2011-12-16 74 views
0

新手在這裏。當我在WHERE子句中放置一個日期('YYYY-MM-DD')時,它的效果很好。當我用前一頁傳遞的變量替換它時,WHERE子句被忽略。是否因爲變量尚未創建?查詢中where子句變量被忽略

<?php $name = $_POST["start"]; ?> 

$query = "SELECT employees.first, employees.last, employees.street, employees.city, 
employees.a, employees.b, 
GROUP_CONCAT(empchecks.checknum ORDER BY empchecks.checkdate SEPARATOR '<br /> ') as 
checknum, 
GROUP_CONCAT(empchecks.checkdate ORDER BY empchecks.checkdate  
SEPARATOR '<br /> ') 
as checkdate 
FROM employees 
INNER JOIN empchecks ON employees.enum = empchecks.enum 
WHERE empchecks.checkdate >= '$start' GROUP BY empchecks.enum"; 
+1

** WARNING **你的代碼容易受到SQL注入攻擊! – 2011-12-16 18:14:12

+0

你可以驗證$ start的值嗎?也就是說,如果你迴應$ query,它說什麼?而丹尼爾也是這樣說的。 :)它不可能被忽略;相反,checkdate比較可能評估爲true($ start是一個空字符串或任何被強制成爲時代開始的東西等等)。 – Christopher 2011-12-16 18:14:21

+1

鑑於你的代碼,'$ start`尚未定義。更重要的是,根據您如何清理輸入變量,您的變量插值技術可能會讓您面臨SQL注入攻擊。 – Kenaniah 2011-12-16 18:15:09

回答

0

您的文章是「開始」,但你指定爲「名」

所以在您的SQL中使用$名稱...

1

看起來就像你分配到$_POST['start']$name而不是$start你稍後會提到。

0

寫這個 提取物($ _ POST) 爲了能夠使用$開始的,而不是$命名