Wert auslesen, ausgeben und um eins erhöhen

Alice

Erfahrenes Mitglied
Hallo.

Kann mir jemand bei folgendem Code etwas helfen?

PHP:
// db-verbinden   
$db = mysql_connect('host', 'user','password') or die ('Internal Error!');
      mysql_select_db('db_name', $db) or die ('Internal Error!');

// zwei spalten auslesen
$dbc1 = mysql_query("SELECT first_counter, slave_counter FROM db_counter");

while($row = mysql_fetch_object($dbc1)) {
   ****? // wie kann ich das ergebnis nun verwenden?
}

// zwei spalten um +1 erhöhen
$dbc2 = mysql_query("UPDATE db_counter SET first_counter = first_counter + 1, slave_counter = slave_counter + 1"); // wofür ich das WHERE? brauche ich es?

// db-verbindung trennen
mysql_close($db);

Der Code funktioniert schon einmal fast. :)

Das mit dem "WHERE" habe ich nicht verstanden und wie ich das ausgelesene verweden kann.
 
Da hat 2 Query. Welches willst du 'verwenden' können?
Und was willst du mit einem WHERE erreichen?

Bitte klare Fragestellung.
 
Also so?

PHP:
while ($row = mysql_fetch_object($result)) {
    $new_var1 = $row->user_id;
    $new_var2 = $row->vollername;
}

echo $new_var1.'<br />';
echo $new_var2.'<br />';

Ich will es ja nicht nur ausgeben sondern die Zahl verwenden.

...

WHERE brauche ich also nur dann wenn ich gezielt etwas ansteuern will? Das soll doch bei einem Counter nicht notwendig sein oder?
 
Wenn du nur einen einzigen Datensatz hast, ist WHERE natürlich überflüssig. Ebenso die While-Schleife.
PHP:
while ($row = mysql_fetch_object($result)) { 
    $new_var1 = $row->user_id; 
    $new_var2 = $row->vollername; 
} 

echo $new_var1.'<br />'; 
echo $new_var2.'<br />';
Das würde übrigens nur den letzten Datensatz ausgeben, weil die Variablen in der While-Schleife immer überschrieben werden.
Wenn du nur einen Datensatz ausliest, mach es gleich so:
PHP:
$row = mysql_fetch_object($result);
echo $row->user_id.'<br />';
echo $row->vollername.'<br />';

Für mehrere Datensätze, muss die Ausgabe mit in der Whileschleife stehen.
 
Verstehe ich jetzt nicht so richtig.

Ich lese doch zwei Spalten aus:
PHP:
// zwei spalten auslesen
$dbc1 = mysql_query("SELECT first_counter, slave_counter FROM db_counter");

Tabelle: db_counter
1. Spalte: first_counter
2. Spalte: slave_counter

Und ich brauche beide Werte in zwei Variablen.
 
PHP:
$stmt = mysql_query( 'SELECT first_counter, slave_counter FROM db_counter' );
$result = mysql_fetch_array( $stmt, MYSQL_ASSOC );

echo $result['first_counter'];
echo $result['slave_counter'];
 
Du musst die Variablen nicht in anderen Variablen speichern, das macht keinen Sinn, was du im Moment machst ist etwa so:
PHP:
$a = 5;
$b = $a;
//mit $b weiter rechnen.. warum? Du hast es doch schon in $a

Die Anzahl der Spalten ist ungleich der Datensätze...
Mit Datensätzen sind die Einträge in der Tabelle gemeint. Jeder Eintrag besteht aus Spalten:

Datensatz 1: [Spalte 1, Wert 1; Spalte 2, Wert 2; Spalte n, Wert n]
Datensatz 2: [Spalte 1, Wert 1; Spalte 2, Wert 2; Spalte n, Wert n]
Datensatz n: [Spalte 1, Wert 1; Spalte 2, Wert 2; Spalte n, Wert n]

Da du scheinbar aber nur einen Datensatz hast, kannst du wie gesagt auf Whileschleife und WHERE-Bedingung verzichten.
 
Vielen Dank! :)

Ich versuche gerade zu prüfen ob die Spalte leer oder NULL ist. Wenn ja, möchte ich eine "0" eintragen.

Mein aktuelles Ergebnis sieht so aus:
PHP:
if ($result['first_counter'] == "") {
    $new_query1 = mysql_query("INSERT INTO db_counter (first_counter) VALUES ('0')");
}

if ($result['slave_counter'] == "") {
    $new_query2 = mysql_query("INSERT INTO db_counter (slave_counter) VALUES ('0')");
}
 
Mit INSERT fügst du einen neuen Datensatz ein. Mit UPDATE kannst du einen bestehenden ändern. Hinweise zur Nutzung findest du bei der Suchmaschine deines Vertrauens.
 
Zurück