2015-06-24 3 views
0

Я пытаюсь получить некоторые данные из моей базы данных, где у меня есть соединение. У меня есть 3 таблицы:Извлечение данных из реляционных таблиц

пользователи колонки = user_id кошки столбец = cat_id user_cat_join колонны-user_is & cat_id

В таблице user_cat_join связаны с соответствующими таблицами.

Я пытаюсь получить данные из таблицы, чтобы показывать только категории, назначенные пользователю. Я зарегистрирован как. Итак, я получаю идентификатор пользователей из функции сеанса, а затем пытаюсь извлечь нужные мне данные.

требуется ('../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)) { 

Я сделал somre дополнительных сообщений об ошибках и, делая это:

if($r === FALSE) { 
    printf(mysqli_error($dbc)); 
    exit(); 
} 

Я получаю это:

Неизвестного column '5ad3e66c5e1e7747707c480dca04fc85' in 'where clause'

Я понятия не имею, к чему это относится?

UPDATE

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

    } 
?> 
+2

http://stackoverflow.com/questions/15439919/mysqli-fetch-array-expects-parameter-1-to-be-mysqli-result -boolean-given-in –

ответ

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. "'"; 
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'"; 
+0

Эй, я все еще получаю 'Warning: mysqli_fetch_array() ожидает, что параметр 1 будет mysqli_result, boolean задан в C: \ MAMP \ htdocs \ home.php в строке 331 назад у меня – PhpDude

+0

Является ли ошибка« Неизвестная колонка '5ad3e66c5e1e7747707c480dca04fc85' в 'where clause' 'все тот же? – Gunni

+0

Я просто получаю пустой экран без ошибок и ошибок. – PhpDude

Смежные вопросы