PHP / MSSQL没有返回记录

时间:2017-05-04 18:07:53

标签: php sql-server

以下代码块是查询数据库并获取所需结果的类中包含的函数。发送的查询取决于属性product_type_id的设置。调用该函数时,<table>标记会被回显,但它不会进入while循环,这会让我相信SQL查询没有运行。这些表已填充数据,并且MSSQL服务器已启动,并且未返回任何错误。 仅在开发环境中使用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));
        }
    }

1 个答案:

答案 0 :(得分:0)

我找到了我错的地方。我忘记在替换<?= (new test()) ->orderByIdDesc() ->limit(15) ->get(); 值后添加$stmt->execute();,这意味着函数首先无法获取数据,因此product_type_id循环没有运行。< / p>

相关问题