Ankündigung

Einklappen
Keine Ankündigung bisher.

Funktion auf einer Abfrage (sql query) verwenden

Einklappen

Neue Werbung 2019

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

  • Funktion auf einer Abfrage (sql query) verwenden

    Hallo,

    hiermit wollte ich wissen wie ich meine Funktion auf mein query verwenden kann.(oder ob ich was falsch mache) Also nachdem ich das Ergbenis ($query) erhalte, will ich es in meiner Funktion funct benutzen.
    Code ist nicht sauber ... sorry

    Hier ist was ich bekomme.



    "Error creating table
    Table 'kante' already exists New records created successfully

    Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\EasyPHP...
    nichts gefunden
    Notice: Undefined variable: in in C:\EasyPHP... "

    PHP-Code:

    $servername 
    "localhost";
    $username "root";
    $password "";
    $dbname "edge";

    // Create connection
     
    $conn mysqli_connect($servername$username$password$dbname);
    // Check connection
     
    if (!$conn) {
        die(
    "Connection failed: " mysqli_connect_error());
    }


    // sql to create table
    $sql "CREATE TABLE kante (
                                nodeIdSource  VARCHAR(6) NOT NULL,
                                nodeIdDestination   VARCHAR(6) NOT NULL
                                )"
    ;

    if (
    mysqli_query($conn$sql)) {
        echo 
    "Table kante created successfully";
    } else {
        echo 
    "Error creating table <br> " mysqli_error($conn);
    }

    $sql "INSERT INTO kante(nodeIdSource, nodeIdDestination)
     VALUES ('A', 'B');"
    ;
     
    $sql .= "INSERT INTO kante(nodeIdSource, nodeIdDestination)
     VALUES  ('B', 'C');"
    ;
     
    $sql .= "INSERT INTO kante(nodeIdSource, nodeIdDestination)
     VALUES ('C', 'D')"
    ;

    if (
    mysqli_multi_query($conn$sql)) {
        echo 
    " New records created successfully <br>";
    } else {
        echo 
    "Error: " $sql "<br>" mysqli_error($conn);
    }


    function 
    funct($in, &$out$node){
    //

    }
    $toFind "";

    $query "SELECT *
              FROM kante
              WHERE    nodeIdSource = '
    $toFind'
              AND      nodeIdDestination = '
    $toFind'";
    $result mysqli_query($conn$query );

    if (
    mysqli_num_rows($result) > 0) {

       
    $toFind mysqli_fetch_assoc($result);

    } else {

        echo 
    "nichts gefunden";
    }

    funct($in$out$toFind);

    mysqli_close($conn); 

    vielen Dank im voraus
    Karl

  • #2
    Warum liest du nicht die Fehlermeldung statt sie einfach nur ins Forum zu kopieren?

    Und du solltest immer prüfen, ob mysqli_query() kein FALSE liefert. Denn dann ist ein Fehler aufgetreten.

    Und beachte den Kontextwechsel nach SQL. Werte, die du in SQL-Code einfügst, musst du mit mysqli_real_escape_string() maskieren.

    Verwende niemals SELECT *, sondern gib im SELECT immer die Spalten an, die du im Ergebnis erwartest.

    Kommentar


    • #3
      hm .. auf mysqli_num_rows kann man sich leider nicht immer verlassen - und bist du dir wirklich sicher, dass du Leere Datenfelder finden willst ?

      Kommentar


      • #4
        Danke für deine Antwort

        Zitat von hellbringer Beitrag anzeigen
        Warum liest du nicht die Fehlermeldung statt sie einfach nur ins Forum zu kopieren?.
        Ich habe sie gelesen und habe auch versucht die zu lösen.


        Und du solltest immer prüfen, ob mysqli_query() kein FALSE liefert. Denn dann ist ein Fehler aufgetreten.
        und wie kann ich es bitte machen?


        Und beachte den Kontextwechsel nach SQL. Werte, die du in SQL-Code einfügst, musst du mit mysqli_real_escape_string() maskieren.
        danke. gemacht!

        Verwende niemals SELECT *, sondern gib im SELECT immer die Spalten an, die du im Ergebnis erwartest.
        gemacht.

        Kommentar


        • #5
          1.
          Code:
          Table 'kante' already exists
          Was ist daran unklar? Schau mal im Handbuch nach CREATE TABLE IF NOT EXISTS


          2.
          Code:
          Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean
          ...
          und wie kann ich es bitte machen?
          https://php-de.github.io/jumpto/sql/...ehler-ausgeben

          Kommentar


          • #6
            Zitat von eagle275 Beitrag anzeigen
            hm .. auf mysqli_num_rows kann man sich leider nicht immer verlassen - und bist du dir wirklich sicher, dass du Leere Datenfelder finden willst ?
            das wusste ich nicht
            was meinst du mit "Leere Datenfelder" ?
            danke

            Kommentar


            • #7
              Zitat von mignoncharly Beitrag anzeigen
              und wie kann ich es bitte machen?
              PHP-Code:
              $result mysqli_query($db$sql);
              if (!
              $result) {
                  
              trigger_error(sprintf("Error '%s' in SQL query '%s'"mysqli_error($db), $sql), E_USER_ERROR);

              Kommentar


              • #8
                Zitat von hausl Beitrag anzeigen
                1.


                Was ist daran unklar? Schau mal im Handbuch nach CREATE TABLE IF NOT EXISTS


                2.


                https://php-de.github.io/jumpto/sql/...ehler-ausgeben
                Hallo,

                danke aber schon erledigt
                mein Problem liegt jetzt nur an Warning und Notice

                Kommentar


                • #9
                  Zitat von hellbringer Beitrag anzeigen

                  PHP-Code:
                  $result mysqli_query($db$sql);
                  if (!
                  $result) {
                  trigger_error(sprintf("Error '%s' in SQL query '%s'"mysqli_error($db), $sql), E_USER_ERROR);

                  danke

                  Kommentar


                  • #10
                    Was ich mit leere Datenfelder finden meine :

                    $toFind = "";

                    und damit startest du die Abfrage in der Funktion ... ich dachte du wolltest bestimmte Inhalte suchen, dann würde ich die dort aber auch eintragen - und bitte den Kontext-Wechsel zu SQL beachten, wir wollen ja keine SQL-Injection Lücke

                    Kommentar


                    • #11
                      Zitat von eagle275 Beitrag anzeigen
                      Was ich mit leere Datenfelder finden meine :

                      $toFind = "";

                      und damit startest du die Abfrage in der Funktion ... ich dachte du wolltest bestimmte Inhalte suchen, dann würde ich die dort aber auch eintragen - und bitte den Kontext-Wechsel zu SQL beachten, wir wollen ja keine SQL-Injection Lücke
                      Ah ok
                      Ja ich will bestimmte Inhalte suchen and ich habe es auch dort eingetragen aber es wird immer wieder "Notice: Undefined variable: toFind in C:\EasyPHP-Devserver..."

                      SQL-Injektion Lücke habe ich auch gelöst. Danke

                      Kommentar


                      • #12
                        Zitat von mignoncharly Beitrag anzeigen
                        ... aber es wird immer wieder Notice: Undefined variable: toFind in ...
                        PHP ist diese Variable, zu dem Zeitpunkt wo du darauf zugreifst, nicht bekannt.

                        Kommentar


                        • #13
                          Am Rande: Prüfen, ob eine Funktion den Rückgabewert FALSE liefert.

                          Sicherer ist, den Rückgabewert grundsätzlich wie folgt zu prüfen:
                          PHP-Code:
                          if($result === FALSE) ... 
                          Warum?
                          Es gibt eine Reihe von Funktionen, die auch eine 0 oder einen Leerstring im Erfolgsfall zurückliefern. Ein ! $result würde dann auch TRUE liefern, obwohl kein Fehler vorliegt.
                          Wichtig: Den typstarken Vergleich nutzen, also === oder !== , je wie es gebraucht wird.
                          Etwas mehr Schreibarbeit, aber für meinen Geschmack auch besser lesbar.

                          Kommentar


                          • #14
                            Zitat von hausl Beitrag anzeigen

                            PHP ist diese Variable, zu dem Zeitpunkt wo du darauf zugreifst, nicht bekannt.
                            klar deswegen habe ich sie deklariert bevor der Verwendung und trotzdem war immer ein Fehler aufgetaucht ... (ich bin kurz wieder seit 1 Monat mit PHP und SQL beschäftigt, sorry wenn mein Wissen so ungenügend sind )

                            Kommentar


                            • #15
                              Zitat von jspit Beitrag anzeigen
                              Am Rande: Prüfen, ob eine Funktion den Rückgabewert FALSE liefert.

                              Sicherer ist, den Rückgabewert grundsätzlich wie folgt zu prüfen:
                              PHP-Code:
                              if($result === FALSE) ... 
                              Warum?
                              Es gibt eine Reihe von Funktionen, die auch eine 0 oder einen Leerstring im Erfolgsfall zurückliefern. Ein ! $result würde dann auch TRUE liefern, obwohl kein Fehler vorliegt.
                              Wichtig: Den typstarken Vergleich nutzen, also === oder !== , je wie es gebraucht wird.
                              Etwas mehr Schreibarbeit, aber für meinen Geschmack auch besser lesbar.
                              ok. danke

                              Kommentar

                              Lädt...
                              X