SQL-Query wird nicht ausgeführt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL-Query wird nicht ausgeführt

    Ich habe eine Tabelle, in der sessionhashs, userid, die IP-Addresse und anderes Zeug gespeichert zwecks wiedererkennung des Users.
    Das Problem besteht nun darin, dass wenn der User nun neu auf die Seite kommt (sprich eine neue Sessions wird erstellt) soll folgendes Stück Code ausgeführt werden:
    PHP-Code:
    if(!$dba->queryfirst("SELECT userid FROM ph_sessions WHERE sessionid = '$sessionid'")) {
      
    sid(randomstring());
      
    $sessionid sid();
      
      if(empty(
    $querystring)) $url "$self?sid=$sessionid";
      else 
    $url "$self?sid=$sessionid&$querystring";
      
    $dba->query("INSERT INTO ph_sessions VALUES (
                         '
    $sessionid',
                          "
    .$uinfo["userid"].",
                          
    $timenow,
                         '
    $clientip',
                         '
    $useragent',
                         '
    $requesturi')");
      
    //header("location: $url");
      
    exit;
    }; 
    Die Sessionid wird vorher über POST, GET oder ein COOKIE übergeben (das Script entscheidet). Wenn keine Sessionid gefunden wird wird sie null gesetzt (dieses Stück Code wird natürlich vor dem Stück oben ausgeführt):
    PHP-Code:
    if(!empty($_COOKIE["sid"])) $sessionid $_COOKIE["sid"];
    else if(!empty(
    $_GET["sid"])) $sessionid $_GET["sid"];
    else if(!empty(
    $_POST["sid"])) $sessionid $_POST["sid"];
    else 
    $sessionid null
    Soweit gibts auch keine Syntaxfehler. Das Problem besteht darin, dass die Query aus dem ersten if-Block nicht ausgeführt wird.
    Wenn ich nun aber die Umleitung auskommentiere, funzt es.
    Jemand Vorschläge?
    "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

  • #2
    PHP-Code:
      $dba->query("INSERT INTO ph_sessions VALUES (

                         '
    $sessionid',

                          "
    .$uinfo["userid"].",

                          
    $timenow,

                         '
    $clientip',

                         '
    $useragent',

                         '
    $requesturi')"); 
    der query ist auch nicht korrekt es fehlen die spaltennamen vor den values (... (spalte1, spalte2) values ('spalt1','spalt2') )

    mach mal ein echo mysql_error($connection); nach besagtem query, dann wirste die fehlermeldung kriegen.

    beebob

    Kommentar


    • #3
      Ich verstehe nicht, warum man ifs nicht strukturiert codet. Das ist ja kaum nachzuvollziehen. Ich weiß, daß es statthaft ist in bestimmten Fällen auf geschwungene Klammern zu verzichten zu können, aber wozu? Darunter leidet in einem extremen Maße die Übersichtlichkeit.

      Das mit dem Insert ohne Spaltennamen wird schon funktionieren, diese sind nur dann erforderlich, wenn die Reihenfolge der Felder betreffend CREATE vom insert abweicht. Aber auch hier wieder warum schreibt man diese Felder nicht hin? Der Code gewinnt unheimlich an Usability für den Programmierer und fördert die Wartbarkeit.

      Ich jedenfalls kann den IFs nicht folgen. Müßte beim $uinfo nict ein Hochkomma gesetzt werden? Ich würdee das ganze so coden - dabei bin ich mir aber nicht sicher, ob ich die IFs richtig aufgelöst habe (vermutlich habe ich mich vertan, denn exit() steht so unnotwendig da - gehört das in den else Zweig?):
      PHP-Code:
      if(!$dba->queryfirst("SELECT userid FROM ph_sessions WHERE sessionid = '$sessionid'")) {
        
      sid(randomstring());
        
      $sessionid sid();
        
        if(empty(
      $querystring)) {
          
      $url "$self?sid=$sessionid";
        } else {
          
      $url "$self?sid=$sessionid&$querystring";
        }
        
        
      $MyUinfo $uinfo["userid"];
        
      $dba->query("INSERT INTO ph_sessions VALUES (
                           '
      $sessionid',
                           '
      $MyUinfo',
                           '
      $timenow',
                           '
      $clientip',
                           '
      $useragent',
                           '
      $requesturi')");
        
      header("location: $url");
        exit;
      }; 

      Kommentar


      • #4
        vielleicht weichen sie ja auch ab!

        Kommentar


        • #5
          Müßte beim $uinfo nict ein Hochkomma gesetzt werden?
          Nee, ist ein int. (genau wie $timenow)
          @beebop: echo mysql_error(); gibt keine Fehlermeldung aus ergo ist die Query OK (die Query funzt ja auch wenn ich sie direkt an der MySQL-Console eingebe)
          @hand: Das exit steht nicht ganz unnütz da. Schließlich braucht der restlich Code nicht ausgewertet werden, wenn die Ausgabe eh durch die Header nicht mehr zu sehen ist.

          edit: Funzt übrigens immer nocht nicht. Argh, ich werd bald verrückt.
          "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

          Kommentar

          Lädt...
          X