2016-01-06 38 views
1

作爲MySQL SELECT語句的一部分,我試圖動態地查詢數據庫。PHP implode()用「數組」替換所有數組值

當前代碼:

$stmt = $pdo->prepare('SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA`="assignment" AND `TABLE_NAME`=:table AND `COLUMN_NAME` != :column1 AND `COLUMN_NAME` != :column2;'); 
    $criteria = [ 
    'table' => $_GET['section'], 
    'column1' => 'jobid', 
    'column2' => 'catid' 
    ]; 
    $stmt->execute($criteria); 

    $arr = array(); 

    echo '<form method="POST">'; 
    foreach ($stmt as $row){ 
    echo '<label>'.ucwords($row['COLUMN_NAME']).':</label> 
    <input type="text" name="'.$row['COLUMN_NAME'].'"/><p>'; 
    $arr[] = $row; 
    } 
    echo '<input type="submit" value="Submit" name="submit"/> 
     </form>'; 

    if (isset($_POST['submit'])) 
    echo $query = implode(',', $arr); 

我找到了使用$ _ POST值工作得很好,但由於某種原因,它輸出:

Array,Array,Array,Array,Array 

即使$改編的的var_dump()是:

0 => 
    array (size=2) 
     'COLUMN_NAME' => string 'title' (length=5) 
     0 => string 'title' (length=5) 
    1 => 
    array (size=2) 
     'COLUMN_NAME' => string 'salary' (length=6) 
     0 => string 'salary' (length=6) 
    2 => 
    array (size=2) 
     'COLUMN_NAME' => string 'location' (length=8) 
     0 => string 'location' (length=8) 
    3 => 
    array (size=2) 
     'COLUMN_NAME' => string 'description' (length=11) 
     0 => string 'description' (length=11) 
    4 => 
    array (size=2) 
     'COLUMN_NAME' => string 'category' (length=8) 
     0 => string 'category' (length=8) 
+1

implode()在多維數組上不起作用。 – developerwjk

+0

您的var_dump顯示$ arr是數組的數組。那是你要的嗎? –

+0

這是僞代碼,因爲我可以看到它不應該超過第一個查詢的一些原因? – RiggsFolly

回答

3

implode函數不能以您想要的方式使用數組數組秒。它使用$arr中的數組並將它們變成字符串'Array'。您可以循環遍歷數組並以這種方式內爆,例如,

$list = ''; 
foreach ($arr as $inner) { 
    $list .= $inner['COLUMN_NAME'].','; 
} 
$list = rtrim($list,','); 
+0

工程很好,但重複的元素,我不知道它: 標題,titlesalary,salarylocation,locationdescription,descriptioncategory,類別 – theglobin

+0

這是因爲''COLUMN_NAME''具有相同的值作爲'0'。掛上我將編輯答案。 – wogsland

+0

非常感謝!我一直在盯着它幾個小時 – theglobin