Unbekante Spalte, obwohl sie da ist

Okay, das klappt ja jetzt und ich glaub das hab ich auch verstanden. Wäre ja schlimm wenn nicht :-) .
Doch nun habe ich ein neues Problem
PHP:
$s_energy = mysql_query("SELECT energy FROM test WHERE user='".$nick."'");
  $s_costs = mysql_query("SELECT costs FROM test WHERE name='".$b_name."'");
  $d_energy = $s_energy - $s_costs;
  $u_energy = "UPDATE test SET energy='".$d_energy."' WHERE user='".$nick."';";
mysql_query($u_energy) or die(mysql_error());
Dann wird folgendes per 'echo' angezeigt:
$s_costs = Resource id #8
$s_energy = Resource id #7
$d_energy = -1
$u_energy = UPDATE test SET energy='-1' WHERE user='Test';

Folgendes sollte aber ausgegeben werden:
$s_costs = 500
$s_energy = 1000
$d_energy = 500
$u_energy = UPDATE test SET energy='500' WHERE user='Test';

wo mach ich da den fehler?
 
Versuch mal folgendes:
PHP:
<?php
  $query = "SELECT `costs` FROM `test` WHERE `name`='".$b_name."'";
  if(!$result = mysql_query($query)) {
    echo '<p><strong>MySQL Error <tt>'.mysql_errno().'</tt>:</strong> '.htmlspecialchars(mysql_error()).'<pre>'.$query.'</pre></p>';
    exit;
  }
  $row = mysql_fetch_array($result, MYSQL_ASSOC);
  $query = "UPDATE `test` SET `energy`=`energy`-".$row['costs']." WHERE `user`='".$nick."';";
  if(!mysql_query($query)) {
    echo '<p><strong>MySQL Error <tt>'.mysql_errno().'</tt>:</strong> '.htmlspecialchars(mysql_error()).'<pre>'.$query.'</pre></p>';
    exit;
  }
 
klaro :)
PHP:
$s_energy = mysql_query("SELECT energy FROM test WHERE user='".$nick."'"); 
$s_costs = mysql_query("SELECT costs FROM test WHERE name='".$b_name."'"); 
$d_energy = $s_energy - $s_costs; 
$u_energy = "UPDATE test SET energy='".$d_energy."' WHERE user='".$nick."';"; 
mysql_query($u_energy) or die(mysql_error());
die variante von dem über mir ist genauso richtig
er arbeitet in seiner version nur performante weil er die berrechnung die mysql erledigen lässt
für dich erstmal veständlicher ist aber glaube ich diese hier

also das was du nun gemacht hast ist praktisch nichts anderes als eine datenbank abfrage
du musst allerdings das ergebnis noch benutzen :)
dazu gibs diese methoden mysql_fetch_row , assoc , array , obj
diese machen es am ende erst möglich die daten auch darzustellen

PHP:
$result_energy = mysql_query("SELECT energy FROM test WHERE user='".$nick."'"); 
$row = mysql_fetch_row($result_energy);
$s_energy = $row[0];

$result_costs = mysql_query("SELECT costs FROM test WHERE name='".$b_name."'"); 
$row = mysql_fetch_row($result_costs);
$s_costs = $row[0];

$d_energy = $s_energy - $s_costs; 

$u_energy = "UPDATE test SET energy='".$d_energy."' WHERE user='".$nick."';"; 
mysql_query($u_energy) or die(mysql_error());
 
Zuletzt bearbeitet:
So, bei Gumbos Code bin ich ein bisschen durcheinandergekommen, aber bei dem Code von SonicBe@m gabs ein paar schwirigkeiten. man muss doch bei $row[0] für die '0' die Spaltennummer angeben, wobei '0' die erste ist, oder etwa nicht? ich habs mal gemacht und es hat nicht funktioniert. Da kam nix raus. Habe es mal mit mysql_fetch_array probiert und klappte, nur nicht mit $s_costs. Dort wird immernoch nix angezeigt.
PHP:
$result_energy = mysql_query("SELECT energy FROM test WHERE user='".$nick."'");
$row = mysql_fetch_array($result_energy);
$s_energy = $row["energy"];

$result_costs = mysql_query("SELECT costs FROM test WHERE name='".$b_name."'");
$row = mysql_fetch_array($result_costs);
$s_costs = $row["costs"];

$d_energy = $s_energy - $s_costs;

$u_energy = "UPDATE test SET energy='".$d_energy."' WHERE user='".$nick."';";
mysql_query($u_energy) or die(mysql_error());
 
Zuletzt bearbeitet:
Was dich bei meinem Vorschlag vielleicht ducheinander gebracht haben könnte sind bloße Überprüfungen, ob eine Lösungsmenge vorhanden ist. Hier einmal ohne:
PHP:
<?php
  $query = "SELECT `costs` FROM `test` WHERE `name`='".$b_name."'";
  $result = mysql_query($query);
  $row = mysql_fetch_array($result, MYSQL_ASSOC);
  $query = "UPDATE `test` SET `energy`=`energy`-".$row['costs']." WHERE `user`='".$nick."';";
  mysql_query($query);
?>
 
Zurück