데이터베이스 테이블의 데이터를 사용하여 메뉴를 만들려고합니다. 그러나 나는 약간의 문제가있다. 내 쿼리 결과가 거짓 부울 값을 반환합니다.MySQL 쿼리가 거짓 값을 반환합니다.
이<?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 개 항목을 포함 idSubcategory
, idCategory
및 name
: idCategory
및 name
및 subcategories
표 3 개 항목을 포함한다.
누군가 내가 여기서 잘못하고있는 것을 말해 줄 수 있습니까?
User defined variable 당신이 MySQL의 명령 줄에서 프로 시저를 실행하려고 했 REFER 희망이 도움이 ? 그냥 둘 중 하나를 확인하는 것은 MySQL이나 PHP 문제입니다. – fedorqui
[DBA SE] (http://dba.stackexchange.com/faq)에 더 적합 – hjpotter92
나는 그것을 시도하고 올바르게 실행됩니다 –