2016-09-30 4 views
1

SQLが多々変わる可能性があるため、SQLフェッチの引数の動的リストを作成します。PHPを使用してオブジェクトに動的引数を渡す - > PHPを使用してフェッチする

リストは、データベースCOL名を表す:

$args = array(
    'id', 
    'colname', 
    'colname2', 
    'colname3', 
    'colname4' 
); 

関数は、すべてのデータをフェッチし、後でメモリキャッシュに格納する配列に値を追加します。

$fetch = $db->connect->query('select * from tablename'); 
$result = array(); 
if ($fetch) { 

    while ($obj = $fetch->fetch_object()) { 

     $params = array(); 
     for($x=0;$x<count($args);$x++){ 
      $params[] = $obj->$args[$x]; 
     } 

     $result[$obj->id] = $params; 
    } 
} 

は私に、このエラーを与える:注意:あなたは配列をしたいときで...

+0

なぜアレイを必要とするときにオブジェクトを取得していますか?これは不必要に複雑に思える。 – jeroen

+0

私は戻ってきた配列にフェッチして保存したい一連のcolnamesを渡したいと思っています。 – sdfgg45

答えて

2

文字列への変換アレイは、なぜあなたは、オブジェクトをフェッチしていますか?

これは不必要に複雑なようです。右の列をフェッチすると、必要なものはすべて1つのステートメントに収められます。

何かのように:これはあなたの連想配列を与えること

$fetch = $db->connect->query('select `' . implode('`, `', $args) . '` from tablename'); 
$result = array(); 
if ($fetch) { 
    while ($arr = $fetch->fetch_assoc()) { 
     $result[$arr['id']] = $arr; 
    } 
} 

注意。あなたの例のような数値配列が必要な場合は、fetch_assoc()の代わりにfetch_row()を使用し、$arr['id']$arr[0]になります。

+0

私はmemcachedに追加されるので、配列にdb値を格納する必要があります。私はこれを使ってすべての値をつかむことができますか? – sdfgg45

+0

@ sdfgg45はい、試してみてください。 – jeroen

+0

継ぎ目が働くが、私は再び新しい入力のためにデータを出す新しい方法を見つける必要がある。 – sdfgg45

関連する問題