我正在尝试创建一个用户定义的函数,用于查询数据库中的表,评估字段数,并将每个字段分配给变量。我已经能够做到这一点,但返回的是一个只显示为文本的字符串,当我真的希望它作为代码执行时。
以下是代码:
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;
}
答案 0 :(得分: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);
另请注意,mysql_*
函数已弃用。您应该使用mysqli
或PDO
。
答案 1 :(得分:0)
我相信您正在寻找的是eval()
然而,使用eval时要非常小心。只有当您100%确定您的查询在$name
变量中的内容时,才能使用它。