検索パラメータを入力できるPHPドリブンページがあります。これらの数字の1つは、いくつかの数字で構成されるIDです。これらの特定の数字で検索すると、すべての結果が返されます。MySQLクエリはPHPスクリプト経由で特定の検索パラメータを返さない
私はphpmyadminとSQLターミナルでまったく同じステートメントを実行し、検索したアイテムだけを返します。だから私は問題は、HTMLフォームに基づいて検索クエリを送信するために使用しているPHPにあると思います。
ステータスオプションのドロップダウンはうまくいきます。入力を必要とするフィールドは正しく動作しません。 :
また、私はNumericIdentiderが入力されると、すべてのデフォルトの状態が選択されている場合
EDITが結果をエコーphpadminに、私はそれらを見ることができるので、フィールドがデータベースに提出されていると確信しているし、彼らとの完全なSQL文表クローズド!= ''
<?php
if($_REQUEST['Search']) {
$sql = "SELECT";
if(strlen($_REQUEST['NumericIdentifier']) > 0) {
$sql .= " * FROM Table Where NumericIdentifier = ".$_REQUEST['NumericIdentifier'];
}
if(strlen($_REQUEST['BeginDate']) > 0) {
$sql .= " * From Table Where TDate >= {$_REQUEST['BeginDate']}";
}
if(strlen($_REQUEST['EndDate']) > 0) {
$sql .= " * From Table Where TDate <= {$_REQUEST['EndDate']}";
}
if($_REQUEST['Status'] == 'Shipped') {
$sql .= "* From Table Where Closed = 'true' ";
}
if($_REQUEST['AreaCode'] > 0) {
$sql .= " * From Table Where AreaCode = {$_REQUEST['AreaCode']}";
}
if($_REQUEST['Status'] == 'Recieved') {
$sql .= " * From Table Where Closed != 'true'";
}
if($_REQUEST['Status'] == 'All') {
$sql = "Select * From Table Where Closed != '\0'";
}
} else {
$sql = "SELECT * FROM Tickets";
}
$res = mysql_query($sql, $conn1);
while($a = mysql_fetch_array($res)) {
echo "<tr><td> <a href='ticket.php?id=".$a['id']."'>".trim($a['id'])."</a> </td> \n <td> ".$a['Name']."</td> \n <td>".date("m/d/Y", strtotime($a['TicketDate']))."</td> \n <td>".$a['Issue']."</td> \n <td>".Showstatus($a['Closed'])." </td></tr>";
} ?>
</table>
</body>
</html>
1.ここで投稿する前に$ SQLを印刷し、結果(「デバッグ」とも呼ばれます)を調べる方法はありますか? 2.これらのリクエストのうち2つ以上が同時に成立する可能性があるので、本当に奇妙なクエリが出る可能性があります。3.すべての列が本当に必要ですか? – Jacob
すべてのif文の後に$ sqlをエコーしてみてください。私は生成されたSQLがあなたが望むものではないと確信しています。 phpmyadminでそれを実行してみてください。 –
私は、結合された状態とそれがどのように不正確になるかについて認識しています。実際には、それ自体が正しく送信されません。 – lomayne