2015-04-30 3 views
2

У меня есть таблица со списком пользователей. У каждого пользователя есть столбец с Select. Я пытаюсь заполнить Select со списком элементов, входящих в ассоциативную таблицу, связанную с каждым пользователем.Создайте ассоциативный массив из SQL SELECT JOIN (PHP)

Я хотел бы сохранить эти элементы в массиве, а затем закодировать этот массив в теге select, но я потерял один массив для каждого пользователя и сделал отношение в результате запроса. Я использую PDO для запросов. Надеюсь, ты поймешь мой вопрос. Мой код ниже о том, как я пытаюсь это сделать. Я новичок в этом.

После многих попыток у меня это есть.

$stmt = $pdo->prepare("SELECT id,account,gender,age,education,expected_salary,phone,email 
    FROM user 
    ORDER BY id"); 
    $stmt->execute(); 
    // set the resulting array to associative 
    $seeker_list = $stmt->fetchAll(PDO::FETCH_ASSOC); 

    //To get the list for the select <tag> 
    foreach($seeker_list as $key => $value){ 

    $seeker = $value['account']; 
    $query = $pdo->prepare('SELECT user_specialty.specialty_id as id_user_specialty, 
           specialty.specialty 
           FROM user_specialty 
           JOIN specialty ON user_specialty.specialty_id = specialty.id 
           WHERE user_specialty.user = $seeker'); 
           $query->execute(); 


    $specialty_list = $query->fetchAll(PDO::FETCH_ASSOC) ;  
     foreach($specialty_list as $key => $value){ 

      echo $value['id_user_specialty']; 
    } 
    } 
+0

'$ данных [$ значение [» id_user_specialty ']] [] = $ value [' specialty ']; '? Затем вам нужно пройти через каждый ассоциативный массив user_id, чтобы распечатать выбранные элементы? – Darren

+0

Обратите внимание, что ваш второй запрос завернут в одинарные кавычки, что означает, что переменные в нем не интерполированы, но это не так. его подготовленные заявления, и, следовательно, переменные должны быть связаны, вы побеждаете его цель. – Ghost

+0

, вы можете захотеть переписать весь запрос и поместить их в один, это будет болезненно медленным, так как у вас есть другой запрос внутри цикла выборки – Ghost

ответ

1

Он работал так:

$stmt = $pdo->prepare("SELECT id,account,gender,age,education,expected_salary,phone,email 
FROM user 
ORDER BY id"); 
$stmt->execute(); 
// set the resulting array to associative 
$seeker_list = $stmt->fetchAll(PDO::FETCH_ASSOC); 

//To get the specialty list 
foreach($seeker_list as $key => $value){ 

$seeker = $value['account']; 
$query = $pdo->prepare("SELECT user_specialty.specialty_id, specialty.specialty 
         FROM user_specialty JOIN specialty 
         ON user_specialty.specialty_id=specialty.id 
         WHERE user_specialty.user=?"); 
$query->execute(array($seeker)); 

//To get the specialty list 
$specialty_list[$seeker] = $query->fetchAll(PDO::FETCH_ASSOC); 
} 

и сделать, как это на столе, где я печатая информация:

<?php if(!empty($seeker_list)){ 
foreach ($seeker_list as $key => $value){ ?> 
<select> 
<?php foreach ($specialty_list[ $value['account']] as $subkey => $subvalue){ ?> 
<option value="<?php ?>"><?php echo $subvalue['specialty']; ?></option> 

+0

тег select тега отсутствует, попытался исправить, но не знаю, как, извините. – Sora

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