Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler bei durch Script erzeugter mysql-Abfrage

Einklappen

Neue Werbung 2019

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

  • Fehler bei durch Script erzeugter mysql-Abfrage

    Hey Leute,

    ich habe gerade eine mysql-Abfrage durch ein Script erzeugen lassen. Zu Testzwecken habe ich sie ausgeben lassen, damit ich sie prüfen kann, Das Ganze sieht jetzt so aus:

    Code:
    "SELECT id FROM ls_contacts WHERE gender = 1 AND age >= 18 AND age <= 74 AND country = 167"
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"SELECT id FROM ls_contacts WHERE gender = 1 AND age >= 18 AND age <= 74 AN' at line 1
    Die mysql-Abfrage wird nach der Prüfung der Eingaben so erzeugt:

    PHP-Code:
      $buildquery '"SELECT id FROM ls_contacts WHERE';

      switch(
    $_POST['gender']){
       case 
    'M'$buildquery .= ' gender = 1 AND'; break;
       case 
    'F'$buildquery .= ' gender = 2 AND'; break;
       default:  
    $buildquery .= '';
      }

      
    $buildquery .= ' age >= '.mysqli_real_escape_string($link$_POST['agefrom']).' AND';
      
    $buildquery .= ' age <= '.mysqli_real_escape_string($link$_POST['ageto']);

      if(
    $_POST['country'] > AND $_POST['country'] < 250){
       
    $buildquery .= ' AND country = '.mysqli_real_escape_string($link$_POST['country']);
      }

      
    $buildquery .= '"';

      echo  
    '<hr>'.$buildquery.'<hr>';

      
    $query mysqli_query($link$buildquery) or die(mysqli_error($link));
      while(
    $row mysqli_fetch_array($query)){
       echo 
    $row['id'].'<br>';
      } 
    Trotz intensiver Suche finde ich den Fehler einfach nicht. Kann mir bitte jemand helfen? Danke!!!
    .

  • #2
    Die Query ist richtig. Hab es bei mir eben getestet, kann es vielleicht sein dass das Datenbankfeld anders geschrieben wird oder sowas in der Art? Probier die Query mal im PHP-Admin auszuführen. Lass dir erst alles ausgeben und dann setzte immer eine weitere WHERE-Bedingung. Dann solltest du schnell den Fehler finden.
    - Laravel

    Kommentar


    • #3
      Ich hab die Lösung!

      Schuld an der Fehlermeldung waren die Anführungszeichen am Anfang und am Ende (").

      So funktionierts:

      PHP-Code:
        $buildquery 'SELECT id FROM ls_contacts WHERE';

        switch(
      $_POST['gender']){
         case 
      'M'$buildquery .= ' gender = 1 AND'; break;
         case 
      'F'$buildquery .= ' gender = 2 AND'; break;
         default:  
      $buildquery .= '';
        }

        
      $buildquery .= ' age >= '.mysqli_real_escape_string($link$_POST['agefrom']).' AND';
        
      $buildquery .= ' age <= '.mysqli_real_escape_string($link$_POST['ageto']);

        if(
      $_POST['country'] > AND $_POST['country'] < 250){
         
      $buildquery .= ' AND country = '.mysqli_real_escape_string($link$_POST['country']);
        }

        
      $query mysqli_query($link$buildquery) or die(mysqli_error($link));
        while(
      $row mysqli_fetch_array($query)){
         echo 
      $row['id'].'<br>';
        } 
      Danke jedenfalls
      .

      Kommentar


      • #4
        Zitat von kremser Beitrag anzeigen
        Hey Leute,

        ich habe gerade eine mysql-Abfrage durch ein Script erzeugen lassen. Zu Testzwecken habe ich sie ausgeben lassen, damit ich sie prüfen kann, Das Ganze sieht jetzt so aus:

        Code:
        "SELECT id FROM ls_contacts WHERE gender = 1 AND age >= 18 AND age <= 74 AND country = 167"
        You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"SELECT id FROM ls_contacts WHERE gender = 1 AND age >= 18 AND age <= 74 AN' at line 1

        Ja. Man speichert nicht das Alter.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar

        Lädt...
        X