Ich habs nur mal schnell zusammengekloppt, deswegen nicht ganz alles ganz sauber.
Also, hier das Template:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> mysqli Test </title>
</head>
<body>
<tmpl_loop name=user_data>
<p><tmpl_var name=idUser>, <tmpl_var name=eMail></p>
</tmpl_loop>
</body>
</html>
Und hier das Script:
<?php
require ./lib/vlibTemplate.class.php;
$db_host = "localhost";
$db_user = "xxx";
$db_pwd = "xxx";
$db_database = "xxx";
$user_data = array();
@$db_conn = new mysqli($db_host,$db_user,$db_pwd);
$db_conn->select_db($db_database);
$result = $db_conn->query("SELECT * from core_user LIMIT 0,10");
//mysql_connect($db_host,$db_user,$db_pwd,$db_database);
//$result = mysql_query("SELECT * from core_user LIMIT 0,10");
$tmpl = new vlibTemplate("./test_mysqli.htm");
$tmpl->setdbloop(user_data, $result);
$tmpl->pparse();
?>
Fehlermeldung ist dann:
Warning: Supplied argument is not a valid resource handle in ...\lib\vlibTemplate.class.php on line 340
Warning: vlibTemplate Warning: Invalid resource type passed to vlibTemplate::setDbLoop() for Db "MYSQL". in ...\lib\vlibTemplate\error.php on line 85
Wie gesagt, der gleiche Code mit Array-Push und setloop funktioniert. Genauso wie die Variante per mysql_connect. Allerdings konnte ich das Problem noch ein bißchen eingrenzen. Wenn du die auskommentierten Zeilen aus dem Script nimmst, funkioniert es genauso wenig. Es funktioniert nur, wenn man die Zeile "mysql_select_db($db_database)" extra schreibt und die DB-Auswahl nicht im mysql_connect-Statement mit übergibt. Allerdings verwende ich in der Regel die Funktion "mysql_select_db" nicht, da der Aufruf im "mysql_connect"-Befehl natürlich kürzer ist.
Irgendwie scheint dann aber die Resourcenkennung nicht zurückgegeben zu werden. Genauso wie bei der OO-Variante. Ich programmiere jetzt mit PHP5 nur noch OO und es wäre schade, wenn ich deswegen die DB-Loops nicht verwenden könnte. Die machen Scripte einfach übersichtlicher.
Gruß
Tim