kostenloser Webspace werbefrei: lima-city


Mit PHP Daten aus MySQL als String auslesen :S

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    s*****d

    Hallo!
    Ich beschäftige mich gerade mal wieder mit MySQL und habe hier ein ref="/tag/kleines problem">kleines Problem. Wahrscheinlich ist die Lösung ganz einfach oder ich denke in die falsche Richtung... Ich bin bei diesem Thema etwas aus der Übung :S
    Also nun mein Problem:
    Ich möchte Daten aus einer MySQL-Datenbank auslesen, eine Zahl, um genau zu sein. Dann soll diese Zahl mit 1 addiert werden und wieder in die Datenbank geschrieben werden.
    Hier der Code:
    $abfrage = "SELECT zahl FROM tabelle WHERE id = 1";
    $ergebnis = mysqli_query($db, $abfrage);

    Da festgelegt ist, dass die
    id = 1
    ist, und die Zahl gefordert ist, hat das Array, was ich so erstellen würde:
    $zeile = mysqli_fetch_array($ergebnis, MYSQL_ASSOC)

    sowieso nur einen Wert.
    Also hier nochmal der ganze Code:
    $abfrage = "SELECT zahl FROM tabelle WHERE id = 1";
    $ergebnis = mysqli_query($db, $abfrage);
    while ($zeile = mysqli_fetch_array($ergebnis, MYSQL_ASSOC)) {
    	//Hier soll der Wert +1 gerechnet werden...
    	//und danach neu in die Datenbank eingetragen werden...
    }


    Ich hoffe ihr könnt mir helfen!

    MfG. Simon D.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du kannst bei mysqli innerhalb einer while Schleife kein zweites Query ausführen.

    Du wirst da noch zusätzlich mit einer for Schleife arbeiten müssen.

    Ich habe es bei einer Navigation mal wie folgt gelöst, so mal als Gedanken Stütze:

    $query2  = dbquery("SELECT admin_nav_cat_name FROM ".DB_PREFIX."admin_nav_cat");
    $result = $query2->num_rows;
    $query2->free();
    
    for($i=0;$i<=$result;++$i){
    	$query  = dbquery("SELECT admin_nav_cat_name FROM ".DB_PREFIX."admin_nav_cat WHERE admin_nav_cat_id=".$i);
    	$query1 = "SELECT * FROM ".DB_PREFIX."admin_nav WHERE admin_nav_cat=".$i." ORDER BY admin_nav_id";
    	$rows=$query->fetch_array();
    	echo "<h3>".$rows['admin_nav_cat_name']."</h3>\n";
    	$query->free();
    	$res=$mysqli->query($query1);
    	echo "<ul>\n";
    	while($data=$res->fetch_array()){
    		echo "<li><a href='".$data['admin_nav_datei']."'>".$data['admin_nav_name']."</a></li>\n";
    	}
    	$res->free();   		
    	echo "</ul>\n<br>\n";
    }


    dbquery ist bei mir eine Funktion die nur $mysqli->query($query) ausführt.
  4. Autor dieses Themas

    s*****d

    Hallo!
    Zu so später Stund habe ich nochmal gegoogled und eine Lösung gefunden, die wie für mich geschaffen scheint:
    implode();
    !
    Nach dem was hier so steht: http://php.net/manual/de/function.implode.php, müsste ich das dann einfach ohne Trennzeichen machen und weil ich ja weiß, dass nur ein Wert im Array enthalten ist, brauch ich dann nichts mehr zu machen!
    Ich werde das morgen mal am Computer ausprobieren, aber das schau ja ganz gut aus ;)

    MfG. Simon D.
  5. Hallo,
    wenn Deine Abfrage immer nur eine Zeile betrifft, könnte es so gehen:
    $abfrage = "SELECT zahl FROM tabelle WHERE id = 1";
    $ergebnis = mysqli_query($db, $abfrage);
    $zeile = mysqli_fetch_array($ergebnis, MYSQL_ASSOC);
    $tmp=$zeile['zahl'];
    $tmp+=1;
    $abfrage = "UPDATE tabelle SET zahl = '".$tmp."' WHERE id = 1";
    $ergebnis = mysqli_query($db, $abfrage);
  6. Das geht auch in einer Query:

    UPDATE
        tabelle
    SET
        zahl = (SELECT zahl FROM (SELECT * FROM tabelle) AS t1 WHERE id = 1) + 1
    WHERE
        id = 1


    http://stackoverflow.com/questions/4429319/you-cant-specify-target-table-for-update-in-from-clause

    Dann spart man sich die zweite Anfrage an der MySQL-Server.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!