Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果odbc_num_rows==空,则显示消息_Php_Sql_Ms Access_Odbc - Fatal编程技术网

Php 如果odbc_num_rows==空,则显示消息

Php 如果odbc_num_rows==空,则显示消息,php,sql,ms-access,odbc,Php,Sql,Ms Access,Odbc,我有一个查询数据库的高级搜索查询。当用户搜索数据库中的内容时,搜索工作正常,并打印出所需的结果 我设置了一个条件,当用户搜索某个内容,但在数据库中找不到某个内容时,它会显示一条消息,表示找不到该记录 但它没有显示我需要的信息。相反,如果找不到记录,它会打印一个带有标题的空表。只有在发现某些东西时,才应打印此表 否如果我将条件从>=-1切换到just=-1,则当无法找到某个对象时,即使该对象在数据库中,它也会显示我需要它的消息 我希望这是有道理的 请看下面我的代码 <table class=

我有一个查询数据库的高级搜索查询。当用户搜索数据库中的内容时,搜索工作正常,并打印出所需的结果

我设置了一个条件,当用户搜索某个内容,但在数据库中找不到某个内容时,它会显示一条消息,表示找不到该记录

但它没有显示我需要的信息。相反,如果找不到记录,它会打印一个带有标题的空表。只有在发现某些东西时,才应打印此表

否如果我将条件从>=-1切换到just=-1,则当无法找到某个对象时,即使该对象在数据库中,它也会显示我需要它的消息

我希望这是有道理的

请看下面我的代码

<table class="table table-bordered table-striped" style="width: 100%;"> 
    <?php

        $dbName = "F:/Domains/autodeal/autodeal.co.za/wwwroot/newsite/db/savvyautoweb.mdb";

        // Throws an error if the database cannot be found
        if (!file_exists($dbName)) {
            die("Could not find database file.");
        }

        // Connects to the database
        // Assumes there is no username or password
        $conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName", '', '');

        $searchMake = addslashes($_POST['makeSelection']);
        $searchModel = addslashes($_POST['modelSelection']);
        $searchBranch = addslashes($_POST['branchSelection']);
        $searchYear = addslashes($_POST['yearSelection']);
        $minPrice = addslashes($_POST['minPriceSelection']);
        $maxPrice = addslashes($_POST['maxPriceSelection']);

        $sql = "SELECT Id, Make, Model, Year, Price, SpecialPrice, Branch, StockNO FROM Vehicle ";

        if ($searchMake || $searchModel || $searchBranch || $searchYear || $minPrice || $maxPrice) {
            $sql .= "WHERE ";
        }

        $combine = '';

        if ($minPrice) {
            $sql .="{$combine}Price BETWEEN $minPrice "; $combine = 'BETWEEN ';
        }

        if ($maxPrice) {
            $sql .="AND $maxPrice "; $combine = 'AND ';
        }

        if ($searchMake) {
            $sql .="{$combine}Make LIKE '%$searchMake%' "; $combine = 'AND ';
        }

        if ($searchModel) {
            $sql .="{$combine}Model LIKE '%$searchModel%' "; $combine = 'AND ';
        }

        if ($searchBranch) {
            $sql .="{$combine}Branch LIKE '%$searchBranch%' "; $combine = 'AND ';
        }

        if ($searchYear) {
            $sql .="{$combine}Year LIKE '%$searchYear%' "; $combine = 'AND ';
        }   

        $rs = odbc_exec($conn, $sql);

        if (odbc_num_rows($rs) >= -1) {

            echo "\t" . "<tr>\n";

            echo "\t" . "<th>Make</th><th>Model</th><th>Year</th><th>Price</th><th>Special Price</th><th>Location</th><th>Stock Number</th>" . "\n";

            while (odbc_fetch_row($rs)) { 
                $id = odbc_result($rs, Id);
                $make = odbc_result($rs, Make);
                $model = odbc_result($rs, Model);
                $year = odbc_result($rs, Year);
                $price = odbc_result($rs, Price);
                $specialPrice = odbc_result($rs, SpecialPrice);
                $branch = odbc_result($rs, Branch);
                $stockNo = odbc_result($rs, StockNO);

                echo "\t" . "<tr>\n";
                echo "\t\t" . "<td><a href=/newsite/selected-vehicles?Id=$id>" . $make . "</td><td><a href=/newsite/selected-vehicles?Id=$id>" . $model . "</a></td><td>" . $year . "</td><td>" . $price . "</td><td>" . $specialPrice . "</td><td>" . $branch . "</td><td>" . $stockNo . "</td>\n";

                echo "\t" . "</tr>\n";
            }

        } else {
            echo "We don’t have the vehicle you are looking for right now, but send us your vehicle requirements and we will be sure to find you one!";
        }

      odbc_free_result($rs);
      odbc_close($conn);

      // This message is displayed if the query has an error in it
      if (!$rs) {
          exit("There is an error in the SQL!");
      }

  ?>

</table>

一般来说,
odbc\u num\u rows()
不是确定SELECT查询返回的行数的可靠方法。如PHP的“注释”部分所述:

注:

使用odbc_num_rows()确定选择后可用的行数将返回-1,其中包含许多驱动程序

Access ODBC驱动程序确实如此


不必使用
odbc\u num\u rows()
,您可以检查第一个
odbc\u fetch\u row()
的结果,以查看其是否为真,如果为真,则继续将数据转储到HTML表中。如果对
odbc\u fetch\u row()
的第一次调用返回FALSE,则未检索到任何行,您可以显示消息。

是否为
If(odbc\u num\u rows($rs)>0)
?如果将其更改为>0,则即使记录在数据库中,也会显示所需的消息。如果我将其更改为<0,则如果找不到记录,则不会显示消息。