我正在尝试从我的数据库中检索一些数据,我已经有了一个连接。我有3张桌子:
users column = user_id cats column = cat_id user_cat_join columns-user_is& CAT_ID
user_cat_join表与相应的表相关。
我试图从表中获取数据,仅显示分配给我登录的用户的类别。所以,我从会话功能中获取用户ID,然后尝试绘制我需要的数据。
require('../ db_con.php');
// BUILD AND DISPLAY THE CATEGORY LIST (RICOH BUILD)
function build_cat_list()
{
global $dbc;
// DEFINE THE QUERY:
$user = $_SESSION['user'];
$q = "SELECT cat_name, cat_icon, cat_color
FROM cats
INNER JOIN user_cat_join
ON cats.cat_id = user_cat_join.cat_id
WHERE user_cat_join.user_id = $user";
$r = mysqli_query ($dbc, $q); // Run the query.
// FETCH AND PRINT ALL THE RECORDS
while ($row = mysqli_fetch_array($r)) {
echo '
<a href="view_cat.php?cat_id='.$row["cat_id"].'">
<div class="indexBox"">
<div class="indexBoxHeader" style="background-color:'.$row["cat_color"].'"><p>'
.$row["cat_icon"].'</p>
</div>
<div class="indexBoxFooter">
<p>'.$row["cat_name"].'</p>
</div>
</div>
</a>';
}
}
显示时出现以下错误?
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\MAMP\htdocs\home.php on line 33
以上是参考:
while ($row = mysqli_fetch_array($r)) {
我做了进一步的错误报告,并通过这样做:
if($r === FALSE) {
printf(mysqli_error($dbc));
exit();
}
我明白了:
'where子句'中的未知栏'5ad3e66c5e1e7747707c480dca04fc85'
我不知道那指的是什么?
更新
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
// BUILD AND DISPLAY THE CATEGORY LIST (RICOH BUILD)
global $dbc;
// DEFINE THE QUERY:
$user = $_SESSION['user'];
$q = sprintf("
SELECT
cat_name, cat_icon, cat_color
FROM
cats
INNER JOIN
user_cat_join
ON
cats.cat_id = user_cat_join.cat_id
WHERE
user_cat_join.user_id = '%s'
",
mysqli_real_escape_string($dbc, $user)
);
$r = mysqli_query ($dbc, $q); // Run the query.
if($r === FALSE) {
printf(mysqli_error($dbc));
}
// FETCH AND PRINT ALL THE RECORDS
while ($row = mysqli_fetch_array($r)) {
var_dump($row);
echo '
<a href="view_cat.php?cat_id='.$row["cat_id"].'">
<div class="indexBox"">
<div class="indexBoxHeader" style="background-color:'.$row["cat_color"].'"><p>'
.$row["cat_icon"].'</p>
</div>
<div class="indexBoxFooter">
<p>'.$row["cat_name"].'</p>
</div>
</div>
</a>';
}
?>
答案 0 :(得分:0)
您必须引用您的用户变量:
$q = "SELECT cat_name, cat_icon, cat_color
FROM cats
INNER JOIN user_cat_join
ON cats.cat_id = user_cat_join.cat_id
WHERE user_cat_join.user_id = '$user'";
答案 1 :(得分:0)
你的WHERE
不应该如下,否则你当前的WHERE
条款看起来像WHERE user_cat_join.user_id = 5ad3e66c5e1e7747707c480dca04fc85
;您的数据库引擎思维是一个单独的列,因此抱怨相同。
WHERE user_cat_join.user_id ='". $user. "'"
简而言之,它看起来应该是
$q = "SELECT cat_name, cat_icon, cat_color
FROM cats
INNER JOIN user_cat_join
ON cats.cat_id = user_cat_join.cat_id
WHERE user_cat_join.user_id ='". $user. "'";