这应该很容易,但我找不到答案。我希望结果数量显示在页面顶部。
<?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)
?>
答案 0 :(得分:0)
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()
。)