加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – MySQL查询返回false值

发布时间:2020-12-13 22:47:41 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试使用数据库表中的数据创建菜单.但我有一点问题.我的查询结果返回false布尔值. 这是我的代码: ?phpclass DataBase{ protected $dbUser; protected $dbPassword; protected $dbHost; protected $dbName; protected $db; function __construct() { $
我正在尝试使用数据库表中的数据创建菜单.但我有一点问题.我的查询结果返回false布尔值.

这是我的代码:

<?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 ;

类别表包含2个项目:idCategory和name,子类别表包含3个项目:idSubcategory,idCategory和name.

谁能告诉我这里做错了什么?

解决方法

将变量名替换为@id_Category,在名称前缺少@.

在MySQL中,@ variable表示用户定义的变量.你可以定义自己的.

SET @a =’test’;
选择一个;

没有@的变量是系统变量,您无法自己定义.
这对您造成了问题,因为您在没有@的情况下声明变量

希望能帮助到你

参考

User defined variable

System variable

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读