这个Mysql选择,php代码有什么问题


What is the wrong with this Mysql select ,php code?

当我试图运行此代码时,任何结果都没有显示。请帮助我

。一些代码在这里...

$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>";
    }

尝试使用反引号转义列DATE,因为它是MySQL数据类型。另一个建议是避免使用查询的字符串串联,因为它容易进行 mysql 注入。使用 PHP PDOMYSQLi

使用 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))
{
}