3 Stimmen

OOPHP aus MySQL auswählen

Ich frage mich, wie ich Folgendes machen kann: Ich möchte eine öffentliche Funktion erstellen, die es mir ermöglicht, SELECT-Anweisungen von MYSQL auszuführen.

Hier ist der Code, den ich bisher habe, aber er zeigt einen Syntaxfehler an.

public function select($table,$options,$where,$orderby)
    {

        $sql = mysql_query("SELECT ". 
        if($options)
        {
        $options
        }
        ." FROM ".
        $table
        if($where)
        {
        ." WHERE ".$where.
        }
        if ($orderby)
        {
        ." ORDER BY ".$orderby.
        }
        ."") or mysql_error() ;

        $row = mysql_fetch_assoc($sql);
        $rows[] = $row;
        print json_encode($rows);

    }

Parse error: syntax error, unexpected T_IF in /home/realcas/public_html/eshop/ecms/system/classes/database.php on line 23

0 Stimmen

Ich habe ähnliche Dinge für Add- und Mod-Abfragen in MySQL geschrieben ... lass es mich wissen, wenn du es brauchst.

0 Stimmen

Das wäre großartig, wie ist der beste Weg, um mit Ihnen in Kontakt zu treten

2voto

alexn Punkte 55397

Sie können keine if-Anweisungen innerhalb eines Funktionsaufrufs haben. Erstellen Sie Ihr SQL außerhalb und übergeben Sie es dann direkt an mysql_query. Beispiel:

$sql = "SELECT ";
if($options)
    $sql .= "FROM " . $table;
if($where)
    $sql .= " WHERE " . $where;
if($orderby)
    $sql .= " ORDER BY " . $orderby;

$query = mysql_query($sql);

Ich gehe auch davon aus, dass Ihnen ein exit vor mysql_error() fehlt. Da Sie es jetzt nicht haben, erhalten Sie keine Ausgabe. Ändern Sie es zu:

mysql_query($sql) or die(mysql_error());

Drittens werden Sie nur in der Lage sein, eine einzelne Zeile abzurufen, da Sie nur einmal mysql_fetch_assoc aufrufen. Sie sollten weiterhin darüber iterieren, solange es Ergebnisse gibt:

$rows = array();
while($row = mysql_fetch_assoc($query))
    $rows[] = $row;

// $rows wird nun alle Zeilen enthalten, die von Ihrem Select-Statement zurückgegeben wurden

2voto

Ed Heal Punkte 57411

Versuchen

$sql = mysql_query("SELECT ". $options ." FROM ". $table .
                   ($where ? "WHERE " . $where : "") .
                   ($orderby? "ORDER BY ".$orderby  : "")) or mysql_error() ; 

$row = mysql_fetch_assoc($sql); 
$rows[] = $row; 
print json_encode($rows);

0voto

diEcho Punkte 51956

Verbesserte Methode:

public function select($table,$options,$where,$orderby)
{
    $options = empty($options) ? "*"   : $options;
    $where  =  empty($where)   ? "1=1" : $where;
    $orderby = empty($orderby) ? ""    : $orderby;

    $qry = "SELECT $options FROM $table WHERE $where $orderby ";
    $result= mysql_query($qry) or die(mysql_error());

    while(($resultArray[] = mysql_fetch_assoc($result));
    return json_encode($resultArray);

}

0 Stimmen

Der Nachteil dabei ist, dass wir dem Benutzer eine Fehlermeldung anzeigen müssen, wenn ein Fehler auftritt und diese auch im JSON-Format vorliegen muss

0 Stimmen

Wenn Sie die Fehlermeldung anzeigen möchten, tun Sie dies, nachdem Sie return empty($resultArray) ? "Fehler in Abfrage " : json_encode($resultArray); gemacht haben.

0 Stimmen

Entschuldigung, ich habe das am Ende des Codes hinzugefügt und es hat nicht funktioniert, es hat mir nur einen Fehler ausgegeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X