我正在尝试创建一个用户定义的函数,该函数查询数据库中的表,评估字段数,并将每个字段分配给一个变量。我已经能够做到这一点,但返回是一个字符串,当我真正希望它作为代码执行时,它只显示为文本。
这是代码:
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;
}
只使用会简单得多
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
。
我相信您正在寻找的是eval()
但是,使用eval时要非常小心。只有当您100%确定您的查询正在向$name
变量中提取什么时,才使用它。