Array mit PDO

Strafi

Erfahrenes Mitglied
Hallo,

Ich stelle gerade ein Applikation auf PDO um. Ich habe eine Funktion:

PHP:
function Fetch()
	{
		if($this->error)
		{
            $this->getError();
            $return = null;
        }
        else
        {
        	while($row = mysql_fetch_assoc($this->result))        	
        	{
            	$return[] = $row;
        	}
        }
	
	if (isset($return)){
	
	return $return;
	}

Mit PDO habe ich es so versucht;

PHP:
foreach($db->query('select * from products') as $row) {
    $column[] = $row;
}

Bringt aber nicht das gewünschte ergebnis.

Kann mir einer erklären wie ich das bei PDO mache...

Grüße
 
Also das aktuelle ist auch das gewünschte.

aktuell wurde es so gemacht. also ich habe da schon PDO benutzt aber das auskommentierte ist die Funktion von oben.

PHP:
//requests
		foreach ($db->query("
		SELECT
			a.*
		FROM
			test_er as ma
		LEFT JOIN
			test_anfragen as a
		ON
			(ma.anfrage_id=a.id)
		LEFT JOIN
			test_trans as t
		ON
			(a.id=t.a_id)
		WHERE
			ma.mais_id='".$mId."'
		AND
			ma.deliv='".$vold."'
		AND
			t.time='0'
		") as $row) {
			$requests[] = $row;
			};
		
//$requests=$mysql->Fetch(); // funktion
 
Ich glaube kaum dass du eine PHP-Code zurückbekommst.

Resulat = Das nach dem Lauf des Programms. Die Ausgabe, der Rückgabewert etc.

Ich sehe momentan nicht mal dein Problem.

Bringt aber nicht das gewünschte ergebnis.
Erwünschtes Ergebnis?
Momantanes Ergebnis?
 
Also hier das originale

PHP:
$mysql->Query("
		SELECT 
            a.* 
        FROM 
            test_er as ma 
        LEFT JOIN 
            test_anfragen as a 
        ON 
            (ma.anfrage_id=a.id) 
        LEFT JOIN 
            test_trans as t 
        ON 
            (a.id=t.a_id) 
        WHERE 
            ma.mais_id='".$mId."' 
        AND 
            ma.deliv='".$vold."' 
        AND 
            t.time='0' 
        ");
		$requests=$mysql->Fetch();
		
		for($i=0;$i<count($requests);$i++) {
......

So das geht! Ich möchte das nun mit PDO machen, da $MySQL->Query die alte Funktion ist.
 
PHP:
foreach($db->query("
        SELECT 
            a.* 
        FROM 
            test_er as ma 
        LEFT JOIN 
            test_anfragen as a 
        ON 
            (ma.anfrage_id=a.id) 
        LEFT JOIN 
            test_trans as t 
        ON 
            (a.id=t.a_id) 
        WHERE 
            ma.mais_id='".$mId."' 
        AND 
            ma.deliv='".$vold."' 
        AND 
            t.time='0' 
        ") as $row) {
    $column[] = $row;
}

Sorry, ich versteh deine Frage nicht. Du verstehst meine Gegenfragen, um deine Frage zu verstehen, ebenfalls nicht.
Ev. versteht jemand anderes mehr

Viel Glück und Tschüss
 
Hey, schön das dus gleich selber hast, aber du darfst die Nachwelt an der Lösung teilhaben lassen.

Btw, gewöhn dir bitte gleich an, statements mit korretem Paramterbinding zu benutzen.

Beispiel:
PHP:
<?php
		//PDO Object holen
		$con = DbUtil::getConnection();
		
		$sql = "SELECT 
					*
				FROM 
					Tabelle
				WHERE
					feld= :feld
				";
		// prepare stmt
		$stmt = $con->prepare($sql);
		// bind params
		$stmt->bindParam(':feld', $feld, PDO::PARAM_STR);
		// execute
		$stmt->execute();
		while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
			// ab hier alles wie gewohnt
		}
		// close connection
		$con = null;
?>
Auführliche Einführung dazu auch in diesem PDO Tutorial
 
Super genau das habe ich gesucht. Das mit der While geht exelente. Ich hatte es inzwischen mit foreach probiert, aber das mit der While finde ich angenehmer da ich dann auch endlich eine Funktion schreiben kann.

Danke dir.
 
Zurück