作为 MySQL SELECT 语句的一部分,我正在尝试动态查询数据库。
当前代码:
$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
即使 $arr 的 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)
最佳答案
implode
函数无法按照您希望的方式处理数组数组。它获取 $arr
中的数组并将它们放入字符串“Array”中。您可以遍历数组并以这种方式内爆,例如,
$list = '';
foreach ($arr as $inner) {
$list .= $inner['COLUMN_NAME'].',';
}
$list = rtrim($list,',');
关于PHP implode() 用 "array"替换所有数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34642391/