[SQL allgemein] empty($mysql_result) vs. mssql_fetch_row($mssqlresult) > NULL

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

  • [SQL allgemein] empty($mysql_result) vs. mssql_fetch_row($mssqlresult) > NULL

    Hi,
    kurze Frage.
    Nach einer mySQL Abfrage überprüfe ich mit
    PHP-Code:
    empty($mysql_result
    ob es überhaupt einen Datensatz gibt.
    Wenn es aber keinen gibt, ist trotzdem $mysql_result > NULL
    Warum?

    Zweitens.
    Wenn ich nach einer mySQL Abfrage überprüfe
    PHP-Code:
    mysql_fetch_row($mysql_result) > NULL 
    Bekomme ich einen Fehler falls die mySQL Abfrage falsch war.

    Wie überprüfe ich jetzt richtig?
    Danke

    EDIT
    Zuletzt geändert von phpMorpheus2; 25.11.2008, 11:22.

  • #2
    Re: [SQL allgemein] empty($mysql_result) vs. mssql_fetch_row($mssqlresult) > NULL

    Sry, DP

    Kommentar


    • #3
      je nachdem, ob jetzt mysql oder mssql(wird grad nicht ersichtlich)
      mssql_num_rows()
      oder
      mysql_num_rows()

      PS:
      > NULL ergibt sowieso keinen Sinn, wenn dann fragt man isNull oder == null

      Kommentar


      • #4
        warum interpretiert mysql die ID "1" genauso wie z.B. "1irgendwas" ?
        Abfrage:
        PHP-Code:
        $mysql_result mysql_query('SELECT id,
                                                nick,
                                                email
                                                FROM user
                                                WHERE id = "'
        .$_GET['user'].'"'); 
        Es gibt nur einen User in der DB mit der ID 1.
        Wenn nun $_GET['user'] z.B. "1irgendwas" ist, bekomme ich trotzdem die Daten für die ID 1 ! Warum?
        Immerhin ist die ID "1" und nicht "1glaskugel" oder sonstiges !

        Kommentar


        • #5
          ID ist Integer. Darum wird wohl nur die 1 interpretiert.
          Bekomme ich Bestätigung?

          Kommentar


          • #6
            wenn id eine Zahl ist solltest du die Anführungszeichen wegmachen.
            desweiteren: SQL-Injection....

            Kommentar


            • #7
              Original geschrieben von krel
              wenn id eine Zahl ist solltest du die Anführungszeichen wegmachen.
              desweiteren: SQL-Injection....
              Danke für den Hinweis.
              Per $_GET werden wenn, dann nur Zahlenwerte übergeben.
              Eine Validierung füge ich hinzu

              Danke

              Kommentar


              • #8
                PS:
                PHP-Code:
                    $mysql_result mysql_query('SELECT id,
                                                        nick,
                                                        email
                                                        FROM user
                                                        WHERE id = '
                .mysql_real_escape_string($_GET['user']).'');

                    if (
                mysql_num_rows($mysql_result))
                    {                                
                        
                $row mysql_fetch_assoc($mysql_result);
                //... 
                So knallt es mir trotzdem Fehler aus wenn $_GET['user'] keinen Wert hat!

                Kommentar


                • #9
                  Wenn per GET nur Integers übergeben werden dürfen, dann solltest du das serverseitig nochmal sicherstellen. Aber doch nicht mit mysql_real_escape_string()! Hast du mal nachgelesen, was die Funktion eigentlich macht? Was soll sie denn bei Zahlen escapen?
                  Prüfe deine GETs mit is_int(), is_numeric() oder caste sie einfach zu int.

                  Kommentar


                  • #10
                    Original geschrieben von phpMorpheus2
                    PS:
                    PHP-Code:
                        $mysql_result mysql_query('SELECT id,
                                                            nick,
                                                            email
                                                            FROM user
                                                            WHERE id = '
                    .mysql_real_escape_string($_GET['user']).'');

                        if (
                    mysql_num_rows($mysql_result))
                        {                                
                            
                    $row mysql_fetch_assoc($mysql_result);
                    //... 
                    So knallt es mir trotzdem Fehler aus wenn $_GET['user'] keinen Wert hat!


                    Kann jemand helfen?

                    Kommentar


                    • #11
                      onemorenerd hat dir doch schon nen Tipp gegeben, vorher einfach
                      PHP-Code:
                      if(isset($_GET['user']) AND is_int($_GET['user'])) {
                       
                      mysql_query("query") OR die(mysql_error());
                      } else {
                      //werfe Fehler oder mach sonst was

                      Kommentar

                      Lädt...
                      X