ralf: MySQL Anbindung

Hi,

ich starte eine mysql anfrage um einen datensatz upzudaten oder einzufügen:

$sql="SELECT * FROM text WHERE id='$PHPSESSID';";
$result=mysql_query($sql,$connect);

if ($result) {
   $textsql="UPDATE text SET name='$name' WHERE id='$PHPSESSID';";
} else {
   $textsql="INSERT text (id,name) VALUES ('$id','$name');";
}

mysql_query($textsql,$connect);

Obwohl der Datensatz nicht vorhanden ist wird der UPDATE-String ausgeführt. Woran kann das liegen?

Gruss

Ralf

  1. Hi,

    ich starte eine mysql anfrage um einen datensatz upzudaten oder einzufügen:

    $sql="SELECT * FROM text WHERE id='$PHPSESSID';";
    $result=mysql_query($sql,$connect);

    if ($result) {
       $textsql="UPDATE text SET name='$name' WHERE id='$PHPSESSID';";
    } else {
       $textsql="INSERT text (id,name) VALUES ('$id','$name');";
    }

    mysql_query($textsql,$connect);

    Obwohl der Datensatz nicht vorhanden ist wird der UPDATE-String ausgeführt. Woran kann das liegen?

    Hallo Ralf,

    Du fragst nur, ob die Variable $result existiert und das tut sie, egal ob ein Datensatz vorhanden ist oder nicht.
    Versuch es mal so:
    $result=Anzahl der Ergebniszeilen; (Befehl weiss ich auswendig grad net)
    if($result==1){
      $textsql="UPDATE text SET name='$name' WHERE id='$PHPSESSID';";
    }
    if($result==0) {
      $textsql="INSERT text (id,name) VALUES ('$id','$name');";
     }

    Weiss net, ob es genau so funktioniert, aber vom Ansatz her müsste es gehen

    Gruss Kerstin

    1. hi,

      Du fragst nur, ob die Variable $result existiert und das tut sie, egal ob ein Datensatz vorhanden ist oder nicht.

      ich war eigentlich der meinung das mysql_query den wert true (was gefunden) oder false(nichts gefunden) zurückgibt und ich diesen wert dann an die variable $result übergebe.

      und mit if($result) dann true und false abfrage, wonach if($result) true erwarte.

      wie gesagt dachte ich, kann mich aber auch irren.

      Hab deinem vorschlag ausprobiert, ging aber nicht

      gruss

      ralf

      1. ich war eigentlich der meinung das mysql_query den wert true (was gefunden) oder false(nichts gefunden) zurückgibt und ich diesen wert dann an die variable $result übergebe.

        und mit if($result) dann true und false abfrage, wonach if($result) true erwarte.

        dann gib doch mal die Variable aus, vielleicht hilft das Dir dann weiter

        Gruss
        Kerstin

  2. if ($result) {

    Obwohl der Datensatz nicht vorhanden ist wird der UPDATE-String ausgeführt. Woran kann das liegen?

    Weil $result keinen Datensatz liefert, sondern nur die result id des Querys und der ist nur dann false wenn der query einen fehler produzierte (zb. auf ein feldabgefragt das nicht existiert) aber wenn das ergebniss des querys 0 zeilen ist, ist result immernoch true.

    http://www.php.net/mysql

    du müsstest auf

    if(mysql_num_rows($result,$connect)>0){

    abfragen.

    Ludwig