MySQL Syntax Probleme

  • MySQL Syntax Probleme

    Guten Tag.

    Ich versuche seit Gestern mein Problem mit den Syntax zu beheben nur ohne Erfolg.

    So ist meine Datenbank aufgebaut:
    [Blockierte Grafik: http://img268.imageshack.us/img268/764/unbenannt1cr.png]

    Allgemein habe ich ein Problem mit folgenden Error:
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\UCP\Includes\mysql.php on
    Der gleiche kommt auch mit free_result.
    Ich habe gelesen das diese Fehler kommen wenn ein Fehler beim Query auftritt.
    Nur finde ich keine Fehler

    Ich habe eine Datei erstellt mit einpaar Funktionen die man am Ende einfach Includen kann.

    PHP-Quellcode

    1. <?php
    2. $link = mysql_connect ('localhost','root','stefan19961');
    3. mysql_select_db('vmp',$link);
    4. $datenbank=0;
    5. function SetDatenbank($string)
    6. {
    7. $GLOBALS['datenbank']=$string;
    8. }
    9. function SaveData($object,$objectdata,$bedingung,$bedingung2,$zahl)
    10. {
    11. if($zahl==0){$query = 'UPDATE ' . $GLOBALS['datenbank'] . ' SET ' . $object . '=' . $objectdata . ' WHERE ' . $bedingung . '=' . $bedingung2 . '';}
    12. if($zahl==1){$query = 'UPDATE ' . $GLOBALS['datenbank'] . ' SET ' . $object . '=' . intval($objectdata) . ' WHERE ' . $bedingung . '=' . $bedingung2 . '';} // wurde erstellt da die Spalte Alter in der Tabelle ein Int ist..
    13. echo '' . $object . $objectdata . '';
    14. echo $query;
    15. $result = mysql_query($query,$GLOBALS['link']);
    16. echo mysql_error($GLOBALS['link']);
    17. mysql_free_result($result);
    18. }
    19. function CreateDataField($fieldname,$fieldinhalt)
    20. {
    21. $query = 'INSERT INTO ' . $GLOBALS['datenbank'] . '(' . $fieldname . ') VALUES (\'' . $fieldinhalt . '\')';
    22. $result = mysql_query($query,$GLOBALS['link']);
    23. echo mysql_error($GLOBALS['link']);
    24. mysql_free_result($result);
    25. }
    26. function CheckDataField($bedingung,$bedingung2)
    27. {
    28. $query = 'SELECT * FROM ' . $GLOBALS['datenbank'] . ' WHERE ' . $bedingung . '=' . $bedingung2 . '';
    29. echo $query;
    30. $result = mysql_query($query,$GLOBALS['link']);
    31. if(mysql_num_rows($result)!=0) { return 1; }
    32. else { return 0; }
    33. mysql_free_result($result);
    34. }
    35. ?>
    Alles anzeigen


    So und wie man sieht lass ich die Errors und die ausgeführten Querys ausgeben diese sehen so aus:

    SQL-Abfrage

    1. SELECT * FROM userdata WHERE username=Opa_Schlumpf // Abfrage ob Username schon verwendet ist
    2. Error: keiner aber der Fehler mit 'mysql_num_rows'.
    3. SELECT * FROM userdata WHERE email=eichinger.ss@gmail.com // Abfrage ob EMail bereits verwendet ist
    4. Error: keiner aber der Fehler mit 'mysql_num_rows'.
    5. UPDATE userdata SET passwort=zensiert WHERE username=Opa_Schlumpf
    6. UPDATE userdata SET name=Stefan WHERE username=Opa_Schlumpf
    7. UPDATE userdata SET wohnort=Österreich WHERE username=Opa_Schlumpf
    8. Error: Unknown column 'Opa_Schlumpf' in 'where clause'
    9. UPDATE userdata SET alter=20 WHERE username=Opa_Schlumpf
    10. Error: 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 'alter=20 WHERE username=Opa_Schlumpf' at line 1
    11. UPDATE userdata SET email=eichinger.ss@gmail.com WHERE username=Opa_Schlumpf
    12. 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 '@gmail.com WHERE username=Opa_Schlumpf' at line 1
    Alles anzeigen


    Ich habe ergoogelt das die einfachen Anführungszeichen nicht notwendig sind.
    Habe dies natürlich auch versucht nur war das Problem das das Alter nicht gespeichert wurde.

    Ich hoffe ihr könnt mir helfen.

    mfg.
    Opa
  • am anfang der jeweiligen funktion musst du noch 'global $blablavariable;'

    Ich hoffe ich konnte dir helfen ^^


    //edit : So wären deine Funktionen richtig ^^

    PHP-Quellcode

    1. <?php
    2. $link = mysql_connect ('localhost','root','stefan19961');
    3. mysql_select_db('vmp',$link);
    4. $datenbank=0;
    5. function SetDatenbank($string)
    6. {
    7. $GLOBALS['datenbank']=$string;
    8. }
    9. function SaveData($object,$objectdata,$bedingung,$bedingung2,$zahl)
    10. {
    11. global $GLOBALS['datenbank'];
    12. if($zahl==0){$query = 'UPDATE ' . $GLOBALS['datenbank'] . ' SET ' . $object . '=' . $objectdata . ' WHERE ' . $bedingung . '= "' . $bedingung2 . '"';}
    13. if($zahl==1){$query = 'UPDATE ' . $GLOBALS['datenbank'] . ' SET ' . $object . '=' . intval($objectdata) . ' WHERE ' . $bedingung . ' = "' . $bedingung2 . '"';} // wurde erstellt da die Spalte Alter in der Tabelle ein Int ist..
    14. echo '' . $object . $objectdata . '';
    15. echo $query;
    16. $result = mysql_query($query,$GLOBALS['link']);
    17. echo mysql_error($GLOBALS['link']);
    18. mysql_free_result($result);
    19. }
    20. function CreateDataField($fieldname,$fieldinhalt)
    21. {
    22. global $GLOBALS['datenbank'];
    23. global $GLOBALS['link'];
    24. $query = 'INSERT INTO ' . $GLOBALS['datenbank'] . '(' . $fieldname . ') VALUES (\'' . $fieldinhalt . '\')';
    25. $result = mysql_query($query,$GLOBALS['link']);
    26. echo mysql_error($GLOBALS['link']);
    27. mysql_free_result($result);
    28. }
    29. function CheckDataField($bedingung,$bedingung2)
    30. {
    31. global $GLOBALS['datenbank'];
    32. global $GLOBALS['link'];
    33. $query = 'SELECT * FROM ' . $GLOBALS['datenbank'] . ' WHERE ' . $bedingung . '= "' . $bedingung2 . '"';
    34. echo $query;
    35. $result = mysql_query($query,$GLOBALS['link']);
    36. if(mysql_num_rows($result)!=0) { return 1; }
    37. else { return 0; }
    38. mysql_free_result($result);
    39. }
    40. ?>
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von xGreekz7x ()

  • Danke lovelins...
    Es kommt funktioniert hat aber mein Problem nicht gelöst...

    Diese Fehler kommen:

    SQL-Abfrage

    1. SELECT * FROM userdata WHERE username='Opa_Schlumpf'SELECT * FROM userdata WHERE email like 'eichinger.ss@gmail.com'
    2. Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\UCP\Includes\mysql.php on line 23
    3. UPDATE userdata SET passwort='zensiert' WHERE username like 'Opa_Schlumpf'
    4. Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\UCP\Includes\mysql.php on line 16
    5. UPDATE userdata SET name='Stefan' WHERE username like 'Opa_Schlumpf'
    6. Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\UCP\Includes\mysql.php on line 16
    7. UPDATE userdata SET alter=20 WHERE username='Opa_Schlumpf'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 'alter=20 WHERE username='Opa_Schlumpf'' at line 1
    8. Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\UCP\Includes\mysql.php on line 16
    9. UPDATE userdata SET wohnort='Österreich' WHERE username like 'Opa_Schlumpf'
    10. Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\UCP\Includes\mysql.php on line 16
    11. UPDATE userdata SET email='eichinger.ss@gmail.com' WHERE username like 'Opa_Schlumpf'
    12. Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\UCP\Includes\mysql.php on line 16
    Alles anzeigen


    Und das ist mein aktueller Code:

    PHP-Quellcode

    1. <?php
    2. $link = mysql_connect ('localhost','root','stefan19961');
    3. mysql_select_db('vmp',$link);
    4. $datenbank=0;
    5. function SetDatenbank($string)
    6. {
    7. $GLOBALS['datenbank']=$string;
    8. }
    9. function SaveData($object,$objectdata,$bedingung,$bedingung2,$zahl)
    10. {
    11. if($zahl==0){$query = 'UPDATE ' . $GLOBALS['datenbank'] . ' SET ' . $object . '=\'' . $objectdata . '\' WHERE ' . $bedingung . ' like \'' . $bedingung2 . '\'';}
    12. if($zahl==1){$query = 'UPDATE ' . $GLOBALS['datenbank'] . ' SET ' . $object . '=' . intval($objectdata) . ' WHERE ' . $bedingung . '=\'' . $bedingung2 . '\'';}
    13. echo $query;
    14. $result = mysql_query($query,$GLOBALS['link']);
    15. echo mysql_error($GLOBALS['link']);
    16. mysql_free_result($result);
    17. }
    18. function CreateDataField($fieldname,$fieldinhalt)
    19. {
    20. $query = 'INSERT INTO ' . $GLOBALS['datenbank'] . '(' . $fieldname . ') VALUES (\'' . $fieldinhalt . '\')';
    21. $result = mysql_query($query,$GLOBALS['link']);
    22. echo mysql_error($GLOBALS['link']);
    23. mysql_free_result($result);
    24. }
    25. function CheckDataField($bedingung,$bedingung2)
    26. {
    27. $query = 'SELECT * FROM ' . $GLOBALS['datenbank'] . ' WHERE ' . $bedingung . ' like \'' . $bedingung2 . '\'';
    28. echo $query;
    29. $result = mysql_query($query,$GLOBALS['link']);
    30. if(mysql_num_rows($result)!=0) { return 1; }
    31. else { return 0; }
    32. mysql_free_result($result);
    33. }
    34. ?>
    Alles anzeigen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Opa_Schlumpf ()

  • Hab mir jetzt per 'echo $result;' einige Ergebniss geholt.
    Und zwar kommt bei der Funktion 'CheckDataField' eine 'Resource id' raus und bei den beiden weiteren Funktionen einfach eine '1'.
    Diese könnte mir auch den Fehler erklären.
    Jetzt meine Frage, kann es sein das es beim Erstellen von neuen Zeilen bzw. Speichern in Vorhandenen Zeilen zu keinen Speicherungen in den Cache kommen kann?
    Denn gespeichert wird alles außer das Alter...

    So gespeichert wird alles nur kommt noch immer dieser Fehler mit:

    Quellcode

    1. Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in


    Ich bin darauf gekommen das es eine Funktion in MySQL Names "Alter" gibt und somit konnte ich nichts in die Spalte Namens "alter" speichern 8)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Opa_Schlumpf ()