(php)(neues problem) sql-frage

zuendkerzn

mir is langweilig
24 August 2006
50
1
jo ich hab mich mal wieder dran gemacht bissl mit php zu proggen

danke schonmal fürs helfen bei dem alten problem

zu dem neuen problem (geht beim 4 oder 5 post weiter)

ich hätt da noch eine frage:

ich lass mir über die funktion meine datenbank auslesen:

$termin=$sql->auslesen("termine","monat=$monatszahl");

die auslesen funktion in der sqlclass dazu:

function auslesen($tabelle, $where) {
$result = mysql_query("SELECT * FROM $tabelle WHERE $where");
$this->l_error=mysql_error();
$row = mysql_fetch_array($result);
$this->l_error=mysql_error();
return $row; }

so jetzt kann es vorkommen das er in der table termine mit dem suchkriterium: monat=$monatszahl mehr als nur einen datensatz bekommt welche funktion kann mir die dann aufspalten das ich die ergebnisse dann doch wieder in nen array bekomm

hoffe mal es ist klar was ich meine :D

danke schonmal fürs lesen




mfg

danke schonmal fürs lesen ;)
 
Zuletzt bearbeitet:
a danke ich probiers mal

arrays wären zwar echt besser
aber da müsst ich meinen epischen class dateien ändern und das tu ich ganz ungern ;)
 
deathangle danke scheint zu funktionieren

ich hätt da noch eine frage:

ich lass mir über die funktion meine datenbank auslesen:

$termin=$sql->auslesen("termine","monat=$monatszahl");

die auslesen funktion in der sqlclass dazu:

function auslesen($tabelle, $where) {
$result = mysql_query("SELECT * FROM $tabelle WHERE $where");
$this->l_error=mysql_error();
$row = mysql_fetch_array($result);
$this->l_error=mysql_error();
return $row; }

so jetzt kann es vorkommen das er in der table termine mit dem suchkriterium: monat=$monatszahl mehr als nur einen datensatz bekommt welche funktion kann mir die dann aufspalten das ich die ergebnisse dann doch wieder in nen array bekomm

hoffe mal es ist klar was ich meine :D

danke schonmal fürs lesen
 
PHP:
function auslesen($tabelle, $where) {
$result = mysql_query("SELECT * FROM $tabelle WHERE $where");
$this->l_error=mysql_error();
while($row = mysql_fetch_array($result)) $a_row[] = $row;
$this->l_error=mysql_error();
return $a_row; }
oder einfach $result übergeben und dann im Code behandeln.
 
Mal aus dem Kopf, ohne Test, aber es dürfte klar sein, was ich meine...
PHP:
function auslesen($tabelle, $where) 
{
    $result = mysql_query("SELECT * FROM $tabelle WHERE $where");
    $this->l_error=mysql_error();
    $i=0;
    while ($row[$i] = mysql_fetch_array($result))
    {
        // Erhöhen (<- HATTE ICH VERGESSEN)
        $i++;

        // Abbrechen bei Fehler?
        if ($this->l_error=mysql_error()) return -1;
    }
    return $row; 
}
 
Zuletzt bearbeitet:
Du solltest aber auch noch als Parameter die Spalten übergeben, Stichwort Performance.

Du solltest den ganzen Aufbau mal überdenken, gerade in Bezug auf Flexibilität (num_rows, affected_rows, ...).
 
hmmm

ich blick die zeile ned:

while ($row[$i] = mysql_fetch_array($result))

ich weis einfach ned was die machen soll ;/


ich habs getestet

es funktioniert danke schonmal an alle

aber kann mir trotzdem wer die zeilen erklären ich würds schon gerne wissen was die da macht genau
bzw. warum die while

danke schonmal

mfg
 
Zuletzt bearbeitet:
PHP:
while ($row[$i] = mysql_fetch_array($result))

Durch diese while-Schleife wird jeder Datensatz durchgegangen bis alle "abgearbeitet" wurden.
In diesem Fall wird dann jedesmal direkt per mysql_fetch_array() der Inhalt des Datensatzes in $row[$i] gespeichert ;)
Du hast also am Ende ein Multidimensionales Array $row in dem alle Datensätze durchnummeriert drin gespeichert sind.
 
PHP:
while ($row[$i] = mysql_fetch_array($result))

Durch diese while-Schleife wird jeder Datensatz durchgegangen bis alle "abgearbeitet" wurden.
In diesem Fall wird dann jedesmal direkt per mysql_fetch_array() der Inhalt des Datensatzes in $row[$i] gespeichert ;)
Du hast also am Ende ein Multidimensionales Array $row in dem alle Datensätze durchnummeriert drin gespeichert sind.

a ok ;)

danke

mfg
 
Ich fände aber noch diese Version besser *g*

PHP:
function auslesen(&$tabelle, &$where, &$row) 
{
    $result = mysql_query("SELECT * FROM $tabelle WHERE $where");
    $this->l_error=mysql_error();
    $i=0;
    while ($row[$i] = mysql_fetch_array($result))
    {
        // Erhöhen (<- HATTE ICH VERGESSEN)
        $i++;

        // Abbrechen bei Fehler?
        if ($this->l_error=mysql_error()) return false;
    }
    return true; 
}

Aufruf mit:
PHP:
$myrow = array();
if (!auslesen("tabellenname", "where-beschreibung", $myrow))
{
    echo "Ein Fehler bei Zeile ".count($myrow);
}
else
{
    echo "Alles okay ;)";
}
 
Scheise nochmal seid ihr alle zu doof die wherebedingung vorher zu escapen wenn ihr schon solche grusligen Klassen verwendet oO? *brrr*.
 
Scheise nochmal seid ihr alle zu doof die wherebedingung vorher zu escapen wenn ihr schon solche grusligen Klassen verwendet oO? *brrr*.
Danke für´s 'doof', aber ich denke, er wollte das ganze nur lauffähig haben, was er nun hat. Ich denke nicht, dass ich zum escapen 'zu doof' bin, aber wenn dir schon sowas rausplatzt, dann wundere dich nicht über bewertungen dazu...
 
Danke für´s 'doof', aber ich denke, er wollte das ganze nur lauffähig haben, was er nun hat. Ich denke nicht, dass ich zum escapen 'zu doof' bin, aber wenn dir schon sowas rausplatzt, dann wundere dich nicht über bewertungen dazu...

Och du hast schon recht, ich reagiere bei sowas empfindlich :>. Viele sind zu faul es richtig zu machen und machen dadurch mehr kaput als sie helfen. Zumal man als Softwareentwickler garkeinen schlechten Code mehr ausspucken sollte, egal wie schnell es gehen muss etc.
 
Och du hast schon recht, ich reagiere bei sowas empfindlich :>. Viele sind zu faul es richtig zu machen und machen dadurch mehr kaput als sie helfen. Zumal man als Softwareentwickler garkeinen schlechten Code mehr ausspucken sollte, egal wie schnell es gehen muss etc.
Irre ich mich oder kam von dir hier überhaupt kein Kommentar bis zu dem Zeitpunkt, als die Lösung schon da war?
 
Irre ich mich oder kam von dir hier überhaupt kein Kommentar bis zu dem Zeitpunkt, als die Lösung schon da war?
Hab den Thread erst gesehen als ne Loesung kam? Zumal ich auch so in nem Diskusionsthread schreiben kann wann ich will. Erst recht wenn ich nen schweren Sicherheitsfehler bemaengle :>
 
Aber warum ist das ein Sicherheitsfehler? 8O
Solange der User nichts eingeben kann was in der WHERE kommt ist da doch nix schlimmes wenn man dort nichts Escaped?
Oder sehe ich das falsch :-? ?
 
Aber warum ist das ein Sicherheitsfehler? 8O
Solange der User nichts eingeben kann was in der WHERE kommt ist da doch nix schlimmes wenn man dort nichts Escaped?
Oder sehe ich das falsch :-? ?

Korrekt. Aber 1. entwickelt man immer sicher und 2. is die chance, dass du dann das ganze doch mal mit ner $_Postvariable etc. verwendest, sehr hoch. Also warum nich von anfang an richtig machen?