4

配列を使用して sql クエリを作成し、プレフィックスを追加しようとしています。

例えば:

$columns = array('column1', 'column2');

"SELECT ". ltrim(implode(", media_", $columns), ', ') . " FROM media WHERE media_id = '{$id}'";

出力:

SELECT ファイル名、media_image FROM メディア WHERE media_id = '3'

私が本当に欲しいもの:

SELECT media_column1, media_column2 FROM media WHERE media_id = '3'

質問: どうすればよいですか: 1. 配列のすべての項目の前に「media_」を付けます。 2. 複数の項目をカンマで区切りますか?

4

3 に答える 3

12

なぜ「media_」を前に付けないのですか?:

$columns = array('column1', 'column2');
$selectColumns = 'media_' . implode(', media_', $columns);

"SELECT {$selectColumns} FROM media WHERE media_id = '{$id}'";

array_map も使用できます。

$columns = array_map(function($column) {
    return 'media_' . $column;
}, $columns);

"SELECT " . implode(',', $columns) . " FROM media WHERE media_id = '{$id}'";
于 2012-09-30T13:31:40.840 に答える
0

[編集]
別の方法

$fields = array_reduce($columns, function ($result, $element) {
  $result = is_null($result) ? 'media_'.$element : $result.', media_'.$element;
  return $result;
});

"SELECT {$fields} FROM media WHERE media_id = '{$id}'";
于 2012-09-30T13:30:53.377 に答える
0

さらに別の方法:

<?php

$id = 1;
$columns = array('column1', 'column2');
array_walk($columns,'add_prefix','media_');

function add_prefix(&$item, $key, $prefix) {
    $item = $prefix . $item;
}


$sql = "SELECT `" . implode('`,`', $columns) . "` FROM media WHERE media_id = '{$id}'";
echo "SQL:" . $sql . "\r\n";

あなたに最適なものを選んでください。

于 2012-09-30T14:51:24.283 に答える