Author Topic: vLib unkompatibel zu mysqli?  (Read 1171 times)

0 Members and 1 Guest are viewing this topic.

Offline Tim81

  • Newbie
  • *
  • Posts: 2
vLib unkompatibel zu mysqli?
on: Sun, 11. November 2007 - 13:03:10
Hi,

auch wenn in diesem Thread /forum/index.php/topic,435.0.html jeder Fehler seitens vLib abgewiesen wird. Wenn ich ein mySQL-Result mit der mysqli-Erweiterung erzeuge, funktioniert der Aufruf
Code: [Select]
get_resource_type($result) in Zeile 340 in der vlibTemplat.class.php nicht.

Ein Fehler in mySQL ist ausgeschlossen, denn mit der Array-Push-Variante funktioniert das ganze und das Ergebnis wird korrekt angezeigt. Auch funktioniert es, wenn ich die mysql-Verbindung mit den Standard-PHP-Befehlen aufrufe. Wenn man allerdings schon auf eine Klasse zurückgreift, sollte man doch erwarten, dass die Benutzer der Klasse auch ansonsten auf objektorientierte Erweiterungen zurückgreifen. Gibt es eine Lösung für die Verwendung von vLibTemplate und mysqli?

Gruß
Tim

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Re: vLib unkompatibel zu mysqli?
Reply #1 on: Sun, 11. November 2007 - 23:46:46
Schreib mir bitte mal ein Skript, dass den Fehler reproduziert. Ich habe mit MySQLi noch nie gearbeitet.

Gruß
Claus

Offline Tim81

  • Newbie
  • *
  • Posts: 2
Re: vLib unkompatibel zu mysqli?
Reply #2 on: Tue, 13. November 2007 - 17:30:11
Ich habs nur mal schnell zusammengekloppt, deswegen nicht ganz alles ganz sauber.

Also, hier das Template:
Code: [Select]
<!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:
Code: [Select]
<?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

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Re: vLib unkompatibel zu mysqli?
Reply #3 on: Tue, 13. November 2007 - 18:10:30
Das Problem trat schon vor einigen Jahren mit AdoDB auf. "setdbloop" hat irgendein Problem mit einem Result aus einem Objekt bzw. einer Klasse. Das wird vorerst nicht gefixt, weil andere Sachen wie vlibMimeMail wichtiger sind.

Du kannst natürlich gerne selbst einen Fix programmieren und hier veröffentlichen.

Gruß
Claus

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Re: vLib unkompatibel zu mysqli?
Reply #4 on: Wed, 01. October 2008 - 18:50:46
Ist in der Version "vLIB_4-2-0.zip" gefixt. Muss nur noch SourceForge überreden, das hochzuladen :).

Kann aber auch über "http://dl.clausvb.de" heruntergeladen werden.

Gruß
Claus