2014-09-11 3 views
1

Я пытаюсь выбрать один запрос, используя user_id, чтобы получить категории, специфичные для пользователя, а затем оттуда использовать результаты первого запроса для выбора данных из второй таблицы во втором запросе. Данные второго запроса, которые я хотел бы отобразить в выпадающем меню. Есть ли простой способ сделать это? Я новичок в использовании mysqli, поэтому, пожалуйста, несите меня.Mysqli select несколько запросов

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

function get_classes($mysqli) { 
    if(isset($_SESSION['user_id'], $_SESSION['username'], $_SESSION['login_string'])) { 
    $user_id = $_SESSION['user_id']; 
    if ($stmt = $mysqli->prepare("SELECT category_id 
          FROM questions WHERE user_id = ?")) { 
     $stmt->bind_param('i', $user_id); 
     $stmt->execute(); 
     $stmt->store_result(); 

     if($stmt->num_rows>0) { 
      $stmt->bind_result($category_id); 
      $stmt->fetch(); 
      if($result = $mysqli->prepare("SELECT category_id, category_name 
          FROM category WHERE category_id = ?")) { 
       $result->bind_param('s', $category_id); 
       $result->execute(); 
       $result->store_result(); 
      } 
     } 
     echo "<select id='classes' name='classes'>"; 
     while ($row = $result->fetch_assoc()) { 
      unset($user_id, $category_name); 
      $category_id = $row['category_id']; 
      $category_name = $row['category_name']; 
      echo '<option value="'.$category_id.'">'.$category_name.'</option>'; 
     } 
     echo "</select>"; 
    } 

} 
} 

Я вызываю функцию с другой страницы с помощью следующего кода:

<?php 
      get_classes($mysqli); 

      ?> 
+0

Возможно, вы, возможно, просто присоединитесь к этим запросам, а намного проще, это набор user_id? – Ghost

+0

Да user_id установлен – nviens

ответ

0

В качестве альтернативы, вы можете присоединиться к ним вместо этого, тогда нормальная выборка. Пример:

function get_classes($mysqli) { 
    if(!isset($_SESSION['user_id'], $_SESSION['username'], $_SESSION['login_string'])) { 
     return false; 
    } 

    $user_id = $_SESSION['user_id']; 

    $sql = ' 
     SELECT 
     category.category_id, 
     category.category_name 

     FROM category 
     JOIN questions 
     ON questions.category_id = category.category_id 

     WHERE questions.user_id = ? 
    '; 
    $stmt = $mysqli->prepare($sql); 
    $stmt->bind_param('i', $user_id); 
    $stmt->execute(); 
    $result = $stmt->bind_result($category_id, $category_name); 

    // printing 
    echo '<select name="classes" name="classes">'; 
    while($row = $stmt->fetch()) { 
     echo '<option value="'.$category_id.'">'.$category_name.'</option>'; 
    } 
    echo '</select>'; 
} 
+0

Вы SQL сломанный, be cause возвратил все категории и (для) некоторый нулевый question.category_id – Deep

+0

Он не показывает выпадающее меню – nviens

+0

@ user3272438 использует функцию: ' ' – Ghost

1

Вы можете сделать все с помощью одного SQL-запроса:

SELECT c.category_id, c.category_name 
    FROM questions q 
    INNER JOIN category c ON c.category_id = q.category_id 
    WHERE q.user_id = ? 
Смежные вопросы