我正在尝试使用数据库表中的数据制作菜单。但是我遇到了一个小问题。我的查询结果返回了一个错误的布尔值。
这是我的代码:
第一个查询正确执行,但第二个查询总是返回false。
这两个过程是这样的:
“categories”表包含2个项目:
请问有人可以告诉我我在这里做错了什么吗?
这是我的代码:
<?php
class DataBase
{
protected $dbUser;
protected $dbPassword;
protected $dbHost;
protected $dbName;
protected $db;
function __construct()
{
$this->dbUser = 'root';
$this->dbPassword = '';
$this->dbHost = 'localhost';
$this->dbName = 'ecommercemakup';
$this->db = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPassword, $this->dbName) or die('Fatal error!');
}
public function getInstance()
{
return $this->db;
}
}
?>
<?php
$db = new DataBase();
$r = mysqli_query($db->getInstance(), "CALL categories()");
if (mysqli_num_rows($r) > 0) {
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
echo '<li> <a href=' . $row['name'] . '.php>';
print_r($row['name']);
echo '</a>
<ul>';
$id = intval($row['idCategory']);
$r1 = mysqli_query($db->getInstance(), "CALL subcategories($id)");
if (mysqli_num_rows($r1) > 0) {
while ($row1 = mysqli_fetch_array($r1, MYSQLI_ASSOC)) {
echo '<li><a href=' . $row1['name'], '.php>';
print_r($row1['name']);
echo '</a></li>';
}
}
echo '</ul></li>';
}
}
?>
第一个查询正确执行,但第二个查询总是返回false。
这两个过程是这样的:
DELIMITER @@
DROP PROCEDURE categories @@
CREATE PROCEDURE ecommercemakup.categories()
BEGIN
SELECT * FROM categories;
END @@
DELIMITER ;
DELIMITER @@
DROP PROCEDURE subcategories @@
CREATE PROCEDURE ecommercemakup.subcategories
(IN id_Category INT)
BEGIN
SELECT idSubcategory, idCategory, name FROM subcategories WHERE idCategory = id_Category;
END @@
DELIMITER ;
“categories”表包含2个项目:
idCategory
和name
,“subcategories”表包含3个项目:idSubcategory
,idCategory
和name
。请问有人可以告诉我我在这里做错了什么吗?
intval
是否将 ID 改成了一个不存在的 ID?或者该 ID 以 0 开头,因此无法找到它? - eric.itzhak$id = intval($row['idCategory']);
更改为$id=1;
进行调试,看看它是否有效。 - fedorqui