php - MySQL 查询返回错误值

标签 php mysql sql

我正在尝试使用数据库表中的数据制作菜单。但我有一个小问题。我的查询结果返回一个错误的 bool 值。

这是我的代码:

<?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 个项目:idCategorynamesubcategories 表包含 3 个项目: idSubcategoryidCategoryname

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

最佳答案

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

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

SET @a = '测试'; 选择@a;

不带@的变量是系统变量,不能自己定义。 这给你带来了问题,因为你在没有 @

的情况下声明变量

希望对你有帮助

引用

User defined variable

System variable

关于php - MySQL 查询返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15064840/

相关文章:

php - 使用 PHP 从数据库生成 HTML 表单

MySql 查询 - 对记录进行分组以获得百分比

mysql - 何时修复 MYSQL 中的自增间隙

MySQL:以月为单位的日期差异(即使 'month' < 30 天也应计为 1)

php - 我想从 MySQL 数据库中随机选择一个 YouTube 视频,并将其显示在我的网页上

php - 使用 PHP Mysql 删除行

Php 包括不工作?未包含的功能

php - Laravel 4 Auth::attempt 在正确的值上返回 false

php - 无法通过php更新sql

sql - 如何快速将Microsoft SQL Server 2008中的表结构导出到Visio以制作ERD?