我正在尝试使用数据库表中的数据创建菜单.但我有一点问题.我的查询结果返回false布尔值.
这是我的代码:
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;
}
}
?>
$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 '
';- ';
$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 '
'; ';}
}
echo '
';}
}
?>
第一个查询正确运行,但第二个查询始终返回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 ;
类别表包含2个项目:idCategory和name,子类别表包含3个项目:idSubcategory,idCategory和name.
谁能告诉我这里做错了什么?
解决方法:
将变量名替换为@id_Category,在名称前缺少@.
在MySQL中,@ variable表示用户定义的变量.你可以定义自己的.
SET @a =’test’;
选择一个;
没有@的变量是系统变量,您无法自己定义.
这对您造成了问题,因为您在没有@的情况下声明变量
希望能帮助到你
参考
标签:php,mysql,sql
来源: https://codeday.me/bug/20190709/1411103.html