Ich lerne jetzt PDO Ich folgte nur das Tutorial auf Youtube. Also hier habe ich hier eine Methode von Db Klasse und ich habe eine neue Zeile PDO :: FETCH_ASSOC hinzugefügt, weil ich eine While-Schleife neben Foreach versuchen möchte.PHP: PDO fetch() zeigt kein Ergebnis
public function query($sql, $params = array()){
$this->_error = false;
$this->_count = 0;
if($this->_query = $this->_pdo->prepare($sql)){
#check if theres a parameter and bindvalue to sql statement
if(count($params)){
$x = 1;
foreach($params as $param){
$this->_query->bindValue($x, $param);
$x++;
}
}
#execute with or without parameter
if($this->_query->execute()){
$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
$this->_whileFetch = $this->_query->fetch(PDO::FETCH_ASSOC);
$this->_count = $this->_query->rowCount();
}else{
$this->_error = true;
}
return $this;
}
} #end of GET function
public function whileFetch(){
return $this->_whileFetch;
}
Die foreach funktioniert gut, aber ich möchte eine while-Schleife, um zu versuchen, aber es scheint nicht funktioniert, keine Daten.
$query = $db->query("SELECT * from master_data.store");
while($row = $query->whileFetch()){
echo $row['name'];
}
Ich versuche es auch, aber ich habe Fehler.
while($row = $query->fetch(PDO::FETCH_ASSOC)){
echo $row['name'];
}
Danke, ich habe aber ich kann nur einmal in jeder der while-Schleife aufrufen oder foreach und die nächste Schleife funktioniert nicht mehr –
@RaffyTLawrence Ja, das ist, weil, sobald Sie die Ergebnismenge mit der while-Schleife durchlaufen haben, die Ergebnismenge erschöpft ist. Sie können den Ergebniszeiger nicht so anpassen, dass er erneut auf den Anfang der Ergebnismenge zeigt. Verwenden Sie also entweder "while" oder "foreach", um die Ergebnismenge zu durchlaufen. –
@RaffyTLawrence Nachdem Sie dies gesagt haben, müssen Sie den PDO-Cursor auf 'CURSOR_SCROLL' setzen, falls Sie die Ergebnismenge * erneut * durchlaufen wollen. Standardmäßig ist es auf 'CURSOR_FWDONLY' eingestellt. Sehen Sie sich diesen SO-Thread und die Antwort * accepted * an: [http://stackoverflow.com/q/15637291/5517143](http://stackoverflow.com/q/15637291/5517143) –