以下代码块是查询数据库并获取所需结果的类中包含的函数。发送的查询取决于属性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));
}
}
答案 0 :(得分:0)
我找到了我错的地方。我忘记在替换<?= (new test())
->orderByIdDesc()
->limit(15)
->get();
值后添加$stmt->execute();
,这意味着函数首先无法获取数据,因此product_type_id
循环没有运行。< / p>