Php5 vs mysql
Sziasztok!
Van egy mysql kezelő objektumom ami tökéletesen működött PHP 4 alatt, de az 5-ös verziónál nem minden lekérdezésnél működik.
A DBNumrows-nál és a DBFetchrow metódus hívásánál valamikor nem létezik a lekérdezés eredménye (supplied argument is not a valid MySQL result )
Mi okozhatja ezt a problémát már próbáltam a mysqli-t is hátha csak azzal működik a php5, de azzal se működik (Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in...)
Az biztos, hogy minden lekérdezés jó, mert kipróbáltam mysql kliensben.
■ Van egy mysql kezelő objektumom ami tökéletesen működött PHP 4 alatt, de az 5-ös verziónál nem minden lekérdezésnél működik.
A DBNumrows-nál és a DBFetchrow metódus hívásánál valamikor nem létezik a lekérdezés eredménye (supplied argument is not a valid MySQL result )
Mi okozhatja ezt a problémát már próbáltam a mysqli-t is hátha csak azzal működik a php5, de azzal se működik (Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in...)
Az biztos, hogy minden lekérdezés jó, mert kipróbáltam mysql kliensben.
- class DBObject{
- var $dhost;
- var $duser;
- var $dpass;
- var $dname;
- var $DBCon;
- var $query;
- var $rowcount;
- var $result;
- var $row;
- var $MYSQL_I=false;
- function DBObject()
- {
- global $dbhost;
- global $dbuser;
- global $dbpassword;
- global $dbname;
- $this->dhost= $dbhost;
- $this->duser= $dbuser;
- $this->dpass= $dbpassword;
- $this->dname= $dbname;
- }
- function GetRowCount()
- {
- return $this->rowcount;
- }
- function SetSQL($sql)
- {
- $this->query=$sql;
- }
- function DBConnect()
- {
- if(!$this->MYSQL_I)
- {
- $this->DBCon=mysql_connect($this->dhost, $this->duser, $this->dpass);
- mysql_select_db($this->dname,$this->DBCon);
- }
- else
- {
- $this->DBCon=mysqli_connect($this->dhost, $this->duser, $this->dpass);
- mysqli_select_db($this->DBCon,$this->dname);
- }
- }
- function DBDisconnect()
- {
- if(!$this->MYSQL_I)
- mysql_close($this->DBCon);
- else
- mysqli_close($this->DBCon);
- }
- function DBQuery()
- {
- if(!$this->MYSQL_I)
- $this->result =mysql_query($this->query, $this->DBCon);
- else
- $this->result =mysqli_query($this->DBCon,$this->query);
- }
- function DBNumrows()
- {
- if(!$this->MYSQL_I)
- $this->rowcount=mysql_num_rows($this->result);
- else
- $this->rowcount=mysqli_num_rows($this->result);
- return $this->rowcount;
- }
- function DBFetchrow()
- {
- if(!$this->MYSQL_I)
- $this->row = mysql_fetch_row($this->result);
- else
- $this->row = mysqli_fetch_row($this->result);
- return $this->row;
- }
- function DBFetcharray()
- {
- $this->row = array();
- if(!$this->MYSQL_I)
- $this->row = mysql_fetch_array($this->result);
- else
- $this->row = mysqli_fetch_array($this->result);
- return $this->row;
- }
- function DBFetchobject()
- {
- if(!$this->MYSQL_I)
- $this->row = mysql_fetch_object($this->result);
- else
- $this->row = mysqli_fetch_object($this->result);
- if($this->row) return $this->row;
- else return false;
- }
- function DBFreeres()
- {
- if(!$this->MYSQL_I)
- $row = mysql_free_result($this->result);
- else
- $row = mysqli_free_result($this->result);
- }
- }
Naplózás, hibakezelés
...
Irreleváns
...
pl. ... where valami='szöveg'
Létezik ilyen, hogy ezt nem képes kezelni az 5-ös php?
Nem létezik
Konkrét példát kellene beírnod ide nem csak valami dummy-t. És természetesen a lekérdezés után egy mysql_error() hívással az sql hibaüzenetét is meg kellene nézni (ha false-t ad vissza a query)
mysql error
Sikerült
Köszi mindenkinek.
Na végre
Én még nem találkoztam ezzel a hibával (igaz mysql-lel nem dolgozom már vagy 2 éve...) így csak a google-t tudom javasolni:
http://www.google.com/search?client=safari&rls=en-us&q=mysql+Illegal+mix+of+collations&ie=UTF-8&oe=UTF-8
Mondjuk ezzel kellett volna kezdened és akkor nem futunk felesleges köröket (persze a mysql verzióját még mindig nem árultad el)