以下代码块是在类中包含的函数,该函数查询数据库并获取所需的结果。发送的查询取决于属性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
循环不运行。