1

このコードを実行しようとすると、結果が表示されません。助けてください

...いくつかのコードはここにあります...

$result = mysql_query("select  *  from dataform where  date between '" . $d1 . "' and '" . $d2 . "'");

if (!$result) {
    echo 'No result';
}
else{
    echo $d1;
    echo $d2;
    echo "<table class=\"hovertable\">";

    echo "
<tr onmouseover=\"this.style.backgroundColor='#ffff66';\" onmouseout=\"this.style.backgroundColor='#d4e3e5';\">";

    echo "<th>File No</th>";
    echo "<th>Manufactor</th>";
    echo "<th>Address</th>";
    echo "<th>Supplier</th>";
    echo "<th>Place Site</th>";
    echo "<th>Tender Ref</th>";
    echo "<th>Award No</th>";
    echo "</tr>";
    while ($row = mysql_fetch_array($result)) {
        echo "<tr onmouseover=\"this.style.backgroundColor='#ffff66';\" onmouseout=\"this.style.backgroundColor='#d4e3e5';\">";
        echo "<th>" . $row["fileno"] . "</th>";
        echo "<th>" . $row["manufacture"] . "</th>";
        echo "<th>" . $row["address"] . "</th>";
        echo "<th>" . $row["sup"] . "</th>";
        echo "<th>" . $row["placesite"] . "</th>";
        echo "<th>" . $row["tenderref"] . "</th>";
        echo "<th>" . $row["awardno"] . "</th>";
        echo "</tr>";
    }
4

1 に答える 1

5

これはMySQLデータ型であるためDATE、バックティック`を使用して列をエスケープしてみてください。もう1つの提案は、mysqlインジェクションが発生しやすいため、クエリの文字列連結の使用を避けることです。PHPPDOまたはMYSQLiを使用します。

PDOの使用例:

<?php
$stmt = $dbh->prepare("SELECT * FROM dataform WHERE  `date` BETWEEN ? AND ?");

$stmt->bindParam(1, $d1);
$stmt->bindParam(2, $d2);

$stmt->execute();

$result = $stmt->fetchAll(PDO::FETCH_ASSOC); //Fetch all results in form of associative array.

?>

入力を常にサニタイズすることを忘れないでください。

更新1

WHILEループ内の状態をチェックしていません。あなたが今している方法は、あなたが間違っている値を割り当てているということです。使ってみてください==

それ以外の

while ($row = mysql_fetch_array($result))
{

}

これに変更します

while ($row == mysql_fetch_array($result))
{

}
于 2012-08-12T15:15:11.560 に答える