PHP/MSSQL未返回记录



以下代码块是在类中包含的函数,该函数查询数据库并获取所需的结果。发送的查询取决于属性product_type_id设置的内容。调用函数时,<table>标签会回荡,但不会输入while循环,这使我相信SQL查询未运行。该表已填充数据,并且MSSQL Server已启动,并且没有返回错误。仅在开发环境中使用MSSQL 2012,IIS10.0和PHP 7.1。网站中的其他数据库查询成功运行。有任何想法吗?谢谢

public function build_product_list()
    {
        // This function builds the product list visible on the main site
        try
        {
            if($this->product_type_id === "0")
            {
                $query = 'SELECT sp.product_id, sp.product_name, sp.product_price, pt.product_type_name FROM shop_products AS sp LEFT JOIN product_types AS pt ON sp.product_type_id = pt.product_type_id ORDER BY sp.product_type_id ASC ';
            }
            else
            {
                $query = 'SELECT sp.product_id, sp.product_name, sp.product_price, pt.product_type_name FROM shop_products AS sp LEFT JOIN product_types AS pt ON sp.product_type_id = pt.product_type_id WHERE sp.product_type_id = :product_type_id ORDER BY sp.product_id ASC';
            }
            $stmt = $this->dbcore_prod_core->dbc->prepare($query);
            $stmt->bindParam(':product_type_id', $this->product_type_id, PDO::PARAM_INT);
            $rowcount = 0;
            echo '<table>';
            while($product_fetch = $stmt->fetch())
            {
                if($rowcount%3 == 0)
                {
                    if($rowcount > 0)
                    {
                        echo '</tr>';
                    }
                    echo '<tr>';
                }
                echo '<td>Product Name:' . $product_fetch['product_name'] . '<br />Product ID:' . $product_fetch['product_id'] . '<br />Delivery Frequency:' . $product_fetch['product_type_name'] . '<br />Price:' . $product_fetch['product_price'] . '</td>';
                $rowcount++;
            }
            echo '</table>';
        }
        catch(PDOException $e)
        {
            exit($this->err_handle->generate_error("product_list_unavailable", "db", $e));
        }
    }

我发现了我出错的地方。我忘了替换product_type_id值后添加$stmt->execute();,这意味着该功能无法首先获取数据,因此为什么while循环不运行。

最新更新