2016-07-19 127 views
0

我有5個表可供用戶上傳的不同文件。我想在一個數組中獲得所有具有相應數據的文件,以便在一個數組中存儲5個文件數據。json對象中只有一個數組

所有表都具有相同的結構:

user_id, file_type, file_size, file_name, file_new_name, file_path, date_created 

在PHP中,我使用這個查詢select * from degree_files, profile_pictures, cpr_files, backgroundcheck_files, video_files where degree_files.user_id = :user_id這給了我所有5點文件的數據,如果我在工作臺上運行它,但JSON對象只有一個陣列。

如何顯示一個數組中的所有數據或什麼是正確的解決方案,因爲現在我正在分別查詢每個表?

我想:

$backgroundCheck = $user_home->runQuery("select * from degree_files, profile_pictures, cpr_files, backgroundcheck_files, video_files where degree_files.user_id = :user_id"); 
$backgroundCheck->execute(array(":user_id"=>$user_id)); 
$nanny_backgroundCheck_file = $backgroundCheck->fetchAll(PDO::FETCH_ASSOC); 


$file_name = array(); 
foreach ($nanny_backgroundCheck_file as $c){ 
    $file_name[] = $c['file_name']; 
} 

$arr[] = array('file_name'=>$file_name); 
echo json_encode($arr, JSON_UNESCAPED_UNICODE); 

和AJAX調用:

$.getJSON("PHP/nannyInfo.php", function(data) { 
     //SELECT2 DATA 
     $.each(data.nanny_backgroundcheck_file, function(index, data) { 
     console.log(data); 

     }); 

}); 

我在控制檯中看到什麼。

enter image description here

+0

所以,當你'的console.log(數據) ' - 你看到了什麼? –

+0

@u_mulder檢查編輯 – raqulka

回答

2

查詢優先。你正試圖從多個表中獲取單個列,對嗎?如果是的話,我建議這種語法:

$sql = " 
    select file_name from degree_files where user_id = :user_id 
    UNION select file_name from profile_pictures where user_id = :user_id 
    UNION select file_name from cpr_files where user_id = :user_id 
    UNION select file_name from backgroundcheck_files where user_id = :user_id 
    UNION select file_name from video_files where user_id = :user_id"; 

然後,實際的SQL執行主要是確定的,但我想它簡化爲:

$backgroundCheck = $db->prepare($sql); 
$backgroundCheck->execute(array(":user_id"=>1)); // 
$fileNames = $backgroundCheck->fetchAll(PDO::FETCH_COLUMN, 'file_name'); 

echo json_encode($fileNames, JSON_UNESCAPED_UNICODE); 
+0

我喜歡這個準備,同時也保護了sql注入。 – Jakumi

+0

謝謝,雖然這已經在問題中使用:) – jirka

+0

哦,你是對的,我的不好; o) – Jakumi

相關問題