PDO_mysql,.. rare query results

Status
Niet open voor verdere reacties.

Flippuh

Gebruiker
Lid geworden
6 mrt 2008
Berichten
59
Hoi,

Ben met een scriptje bezig en loop voor de zoveelste keer tegen een PDO "?bug?"aan
Als ik de laatste query uitvoer via phpmyadmin, krijg ik 467 rows terug, als ik het via dit scriptje doe krijg ik een empty result (array()).

Hoe komt dit, heb dat namelijk wel vaker en kan er m'n vinger niet opleggen.

PHP:
$Db=$this->getDb();
		$page=$Db->quote($page);
		$id=$Db->quote($this->iProjectId, PDO::PARAM_INT);
		$Q=<<<EOS
	SELECT 	DISTINCT(`language`) FROM `MultiLanguage` WHERE page=$page AND `project_id`=$id
EOS;
		$Qres=$Db->query($Q);
		$Qres->setFetchMode(PDO::FETCH_ASSOC);
		$Array=$Qres->fetchAll();
		$c=count($Array);
		$Src='<label>Selecteer een bestaande taal</label><select name="language" id="language"><option>selecteer taal</option>';
		for($i=0;$i<$c;$i++){
			$Src.='<option>' . $Array[$i]['language'] . '</option>';
			$lang=$Db->quote($Array[$i]['language']);
			$Qopt[]='`code` != ' . $lang;
		}
		$Qopt=implode(' AND ', $Qopt);
		$Src.='</select>';
		$Q=<<<EOS
	SELECT `code` FROM `LanguageCodes` WHERE  $Qopt
EOS;
		$Db=NULL;
		$Db=$this->getDb();
		$Qres=$Db->query($Q);
		$Qres->setFetchMode(PDO::FETCH_ASSOC);
		$Array=$Qres->fetchAll();
		echo $Q;
                /*
                 * Deze query MOET minimaal 467 results terug geven,.. 
                 * slechts een lege array  krijg ik terug.
                 */
		echo '<pre>' . print_r($Array, true) . '</pre>';
		$Src.='<label>Selecteer een nieuwe taal</label><select name="new_language" id="new_language"><option>selecteer taal</option>';
		for($i=0;$i<$c;$i++){
			$Src.='<option>' . $Array[$i]['code'] . '</option>';
		}
		$Src.='</select>';
		return $Src;

een var_dump van het query result geeft:
Code:
object(PDOStatement)#9 (1) {
  ["queryString"]=>
  string(57) "	SELECT `code` FROM `LanguageCodes` WHERE  `code` != 'nl'"
}
 
Laatst bewerkt:
Fixed!

Ik gebruik(te) een singleton pattern voor het aanmaken van de database connectie,
Dit gaat meestal goed,.. behalve als het fout gaat zegmaar ;(
Ook het query result dien je blijkbaar niet te kunnen overschrijven.

Het is dus belangrijk dat je na je query beide objecten unset met

PHP:
$Db=NULL;
$Qres=NULL;

Well erg jammer dat je het database object niet opnieuw kan gebruiken, had weer wat overhead gescheeld.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan