automatisk bind_result ?
I forbindelse med at jeg er ved at lave et MySQLi objekt kunne jeg godt tænke mig at bind_result blev udført automatisk. Jeg har prøvet 2 måder men ingen ser ud til at virke.Metode 1 - eval
$meta = $this->query->result_metadata();
$list = array();
while ($field = $meta->fetch_field())
{
$list[] = $field->name;
}
$str = 'if ($this->query->bind_result(' . '$' . $name . '[\'' . implode('\'], $'. $name . '[\'', $list) . '\']' . '))';
$str .= "\r\n";
$str .= '{';
$str .= "\r\n";
$str .= 'echo "true";';
$str .= "\r\n";
$str .= '}';
$str .= "\r\n";
$str .= 'else';
$str .= "\r\n";
$str .= '{';
$str .= "\r\n";
$str .= 'echo "false";';
$str .= "\r\n";
$str .= '}';
$txt = new text();
$txt->pre("Eval ext\r\n_______________________________________\r\n" . $str);
unset($txt);
eval($str); // dette udskriver true (fra echo "true");
Metode 2 call_user_func_array
$meta = $this->query->result_metadata();
while ($field = $meta->fetch_field())
{
$params[] = &$$name[$field->name];
}
call_user_func_array(array($this->query, 'bind_result'), $params);
Uanset hvad så køre jeg herefter
$result = array();
while ($this->query->fetch()) {
$txt = new text();
$txt->pre(print_r($$name,true));
unset($txt);
foreach($$name as $key => $val)
{
$c[$key] = ($this->encode == 'ISO' ? mb_convert_encoding($val, "UTF-8", "ISO-8859-1") : $val);
}
$result[] = $c;
}
Her opstår problemet så den skriver:
Notice: Undefined variable: row in C:\server\htdocs\MVC\model\mysqlc.class.php on line 270
Notice: Undefined variable: row in C:\server\htdocs\MVC\model\mysqlc.class.php on line 272
PS: $name er = 'row' som standart.
Alt dette er selvfølgelig en del af et objekt (http://pastebin.com/m4003abe0 - områder fremhæver) som er rimelig kompliceret, da der ikke er ryddet helt op i det. (af den grund, så se venligt bort far at komme med konstruktiv kritik. Jeg beder om feedback når jeg er færdig).
