PHP从Access数据库计算结果

时间:2013-05-10 16:34:29

标签: php ms-access

这应该很容易,但我找不到答案。我希望结果数量显示在页面顶部。

<?php
$db = realpath('C:\AccessBackEnds\Supplylist\SupplyEnd.accdb');
$conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$db",'','') or die
("Unable to connect to server");

$name = $_GET['ServiceLineItem'];

$info1 = "SELECT * FROM CiscoROS WHERE ServiceLineItem ='$name'";
$rs1=odbc_exec($conn,$info1);

echo odbc_num_rows($info1);

while($row = odbc_fetch_array($rs1))    {
echo "<dt>Company:  </dt><strong>" . $row["Company"] . "</strong>";
echo "<dt>Monitoring Status:  </dt><strong>" . $row["MonitoringStatus"] . "</strong>";
echo "<br>*******************************************************************";

}

odbc_close($conn)
?>

1 个答案:

答案 0 :(得分:0)

期望{p> odbc_num_rows()传递odbc_exec()调用返回的资源。您当前正在向它传递一个字符串(恰好是SQL语句)。要获得返回的行数,可以尝试使用...

odbc_num_rows($rs1)

...但并非所有ODBC驱动程序都返回SELECT语句返回的实际行计数。许多驱动程序只返回受INSERT,UPDATE和DELETE语句影响的实际行,并且只返回SELECT语句的-1; Microsoft Access驱动程序就是其中之一。

相反,你可以先做SELECT COUNT(*) AS n FROM CiscoROS WHERE ...,或者你可以先循环遍历行来计算它们,然后再循环遍历它们以打印出来。

另外,请注意......

您直接从$name获取$_GET并将其填入SQL语句。这使您容易受到 SQL注入攻击。您应该考虑使用参数化查询。 (查看odbc_prepare()odbc_execute()。)