2011-12-16 8 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インジェクション攻撃を受けやすいです! –

+0

$ startの値を確認できますか?つまり、$ queryをエコーすると、それは何と言いますか?ダニエルも言っている。 :)それは無視される可能性は低いです。むしろ、チェックデートの比較は真であると評価される可能性があります($ startは空文字列またはエポックの開始などに強制されるものです)。 – Christopher

+1

あなたのコードがあれば、 '$ start'は定義されていません。さらに重要なのは、入力変数をどのようにサニタイズするかによって、変数補間の技法によってSQLインジェクション攻撃が可能になることです。 – Kenaniah

答えて

0

あなたのPOSTが "開始" ですが、 "名前" に割り当てる

ですから、$name$_POST['start']を割り当てているよう

+0

13分前に?皆さんは10分、11分、12分ですか?私は最初のものだった;) – djot

1

が見える...あなたのSQLで$名を使用し、あなたが後で参照している$startではありません。

3

変数$ startは存在しません。それを$ nameに置き換えて、それが動作するかどうか確認してください。代わりにsprintf http://php.net/manual/en/function.sprintf.phpを使用して、クエリの変数を渡す必要があります。

+0

sqlの$ nameと同じ結果。 $ queryをエコーすると、$ start/$ nameは空です。 –

0

書き込みこの エキス($ _ POST) を$ $名前

関連する問題