我希望有一个SelectAll函数,它接受一些参数(类,表,排序字段和排序顺序。)这些注释解释了发生了什么(或者应该是什么。)
public static function SelectAll($class, $table, $sort_field, $sort_order = "ASC")
{
/* First, the function performs a MySQL query using the provided arguments. */
$query = "SELECT * FROM " .$table. " ORDER BY " .$sort_field. " " .$sort_order;
$result = mysql_query($query);
/* Next, the function dynamically gathers the appropriate number and names of properties. */
$num_fields = mysql_num_fields($result);
for($i=0; $i < ($num_fields); $i++)
{
$fetch = mysql_fetch_field($result, $i);
$properties[$i] = "'".$fetch->name."'";
}
/*echo [$properties[0]; echo "<br />";}*/
/* Finally, the function produces and returns an array of constructed objects. */
while($row = mysql_fetch_assoc($result))
{
for($i=0; $i < ($num_fields); $i++)
{
$args[$i] = $row[$properties[$i]];
}
$array[] = call_user_func_array(new $class, $args);
} return $array; }
现在,我遇到的问题是$row[$properties[$i]]
导致'未定义的索引'。
在函数收集字段的数量/名称并将它们存储在数组中之后,我可以回显$properties[0]
的值,它显示应该是'id',但是$row[~anything here~]
除非我手动输入值,例如$row['id']
,否则将无法工作。你可以想象非常令人沮丧和困惑。
为什么这不起作用?是否有任何解决方案或其他方法来完成此功能?
答案 0 :(得分:0)
我看到您的$properties[$i]
数组项具有引用等值"'id'"
,
所以$row[$properties[$i]]
&lt; ==&gt; $row["'id'"]
!= $row["id"]
;
您可能希望在$result === false
$result = mysql_query($query);
无论如何,我认为您可以将此功能替换为此功能(除非您构建它仅用于演示):
public static function SelectAll($class, $method_name, $table, $sort_field, $sort_order = "ASC"){
/* First, the function performs a MySQL query using the provided arguments. */
$query = "SELECT * FROM " .$table. " ORDER BY " .$sort_field. " " .$sort_order;
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
$array[] = call_user_func_array(array($class,'__construct'), $row);
return $array;
}