0

データベース内のテーブルをクエリし、フィールド数を評価し、各フィールドを変数に割り当てるユーザー定義関数を作成しようとしています。私はそれを行うことができましたが、実際にはコードとして実行したいのに、戻り値はテキストとしてのみ表示される文字列です。

コードは次のとおりです。

function query_function() { 
    $client_selected = "1";
    $name = "";
    $result = mysql_query("SELECT * FROM client_table WHERE client_id = '$client_selected'"); 
    $row = mysql_fetch_array($result);
    $num=mysql_num_fields($result);
    $i = 0;
    while ($i < $num) { 
        $name .= "$" . mysql_field_name($result, $i);
        $name .= " = $" . "row['" . mysql_field_name($result, $i) . "'];"; 
        $i++;
    } 
    return $name;
}  
4

2 に答える 2

1

次のようにする方がはるかに簡単です。

extract(mysql_fetch_assoc($result), EXTR_SKIP);

http://php.net/manual/en/function.extract.php

同様に、次のようにすることもできます。

$name = mysql_field_name($result, $i);
$$name = $row[$name];

例えば:

$row = array(
    'a' => 1,
    'b' => 2,
    'c' => 3,
);
extract($row, EXTR_SKIP);
var_dump($a, $b, $c);

$name = 'd';
$$name = 4;
var_dump($d);

http://codepad.org/yvW0G8xc

mysql_*また、関数は非推奨であることにも注意してください。mysqliまたはを使用する必要がありますPDO

于 2012-09-04T23:47:52.710 に答える
0

あなたが探しているのはeval()

ただし、eval を使用する場合は十分に注意してください。$nameクエリが変数に何を引き込んでいるかが 100% 確実な場合にのみ使用してください。

于 2012-09-04T23:48:00.170 に答える