Frage zu einer Datenbankabfrage

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Frage zu einer Datenbankabfrage

    Ich habe ein php-skript geschrieben , mit dem ich eine Datenbank (die ich zuvor mit phpmyadmin erstellt habe) abfragen möchte. Ich bekomme aber immer folgende fehlermeldung: Fehlermeldung=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 'LIKE ''' at line 1.

    Ich gleube es handelt sich um einen sehr banalen fehler, ich finde ihn aber nicht, für hilfe wäre ich sehr dankbar.

    Der von mir verfasste quellcode:



    das PH-Skript:

    Quellcode

    1. <?include ("mysql.inc")?>
    2. <!doctype html public "-//W3C//DTD HTML 4.0 //EN">
    3. <html>
    4. <head>
    5. <title>Buchverwaltung</title>
    6. </head>
    7. <body>
    8. <h3> Suchergebnis</h3>
    9. <?php
    10. mysql_select_db("Buchverwaltung");
    11. //$Attribut='Attribut';
    12. //$Suchanfrage='Suchanfrage';
    13. $anfrage="SELECT * FROM buch WHERE $Attribut LIKE '$Suchanfrage';";
    14. //echo ($anfrage);
    15. $ergebnis=mysql_query($anfrage)or die ("Fehlermeldung=".mysql_error());
    16. echo mysql_num_rows($ergebnis)."Datens&auml;tze<p>";
    17. echo "<Table border='1' width='70%'>";
    18. for($i=0;$i<mysql_num_fields($ergebnis);$i++){
    19. echo"<th>".mysql_field_name($ergebnis,$i)."</th>";};
    20. while($zeile=mysql_fetch_row($ergebnis))
    21. {echo"<tr align='center'>";
    22. for($i=0;$i<mysql_num_fields($ergebnis);$i++)
    23. {echo "<td>".$zeile[$i]."</td>";};
    24. echo"<tr>";};
    25. echo"</table>";
    26. mysql_free_result($ergebnis);
    27. mysql_close();
    28. ?>
    29. <hr>
    30. <a href="abfrage.html">Abfrage</a><br>
    31. <a href="start.html" >Startseite</a>
    32. </body>
    33. </html>
    Alles anzeigen






    Das HTML-Skript:

    Quellcode

    1. <!doctype html public "-//W3C//DTD HTML 4.0 //EN">
    2. <html>
    3. <head>
    4. <title>Buchverwaltung </title>
    5. </head>
    6. <body>
    7. <h3>
    8. Datenbankabfrage
    9. </h3>
    10. <hr>
    11. <form action='abfrage.php' method='post'>
    12. <pre>
    13. Attribut: <select name='Attribut' size='1'>
    14. <option value='isbn'>ISBN
    15. <option value='autor'>Autor
    16. <option value='titel'>Titel
    17. <option value='verlag'>Verlag
    18. <option value='jahr'>Erscheinungsjahr
    19. <option value='besitzer'>Besitzer
    20. </select><br>
    21. Suchanfrage: <input type ='text' name='Suchanfrage' size ='10' maxlength='20' value='%'>
    22. </pre>
    23. <input type='submit' value="Abfrage">
    24. <input type='reset' value="zur&uuml;cksetzen">
    25. </form> <hr>
    26. <a href='start.html'>Startseite</a>
    27. </body>
    28. </html>
    Alles anzeigen




    Gruß

    Stefan
  • Du programmierst aber noch ziemlich unsicher...
    Informier dich mal zu SQL Injections: [coderwiki]/Informationen/PHP-MySQL-Injection[/coderwiki]

    Außerdem zu [google]register_globals[/google]

    Und dann änderst mal zur Fehlersuche die Abbruchbedingung, damit du weißt welcher SELECT überhaupt durchgeführt wurde:

    Quellcode

    1. $ergebnis=mysql_query($anfrage)or die ("Query: ".$anfrage."\nFehlermeldung=".mysql_error());


    stefan77 schrieb:

    wie bekomme ich denn die Werte aus der dropdown box in die variable $atrribut?

    Erklärt das Ergebnis zur Suhe nach register_globals.

    Quellcode

    1. $attribute = $_POST['Attribut'];
  • stefan77 schrieb:


    hi, in der variablen steht nichts drin!! Jetzt mal ne dumme frage, aber wie bekomme ich denn die Werte aus der dropdown box in die variable $atrribut? ?(


    Na dann ist ja alles klar, denn dein Like muss gefühlt sein, sonst funktioniert die SQL-Abfrage nicht und du könntest dir den Like-Bestandteil sowieso sparen...

    Also am besten beschäftigst du dich mal wie d0nut gesagt hatte echt mal mit den Injections, die sollten dein Problem lösen.