Mysql Query Problem

alex130

Erfahrenes Mitglied
Hi
Ich hab wieder mal ein Problem mit meinem query und zwar bekomme ich immer diese Meldung:
Code:
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 'use, street, place, country, note, profile, user, type_of_contac
und mein query sieht so aus:
PHP:
$sql = 'INSERT INTO '.$mysql_private_clients.'(salutation, academic_title, surname, first_name, birthday, national_insurance_number, occupation, phone_number, occupational, mobile_phone, fax, email, type, number, date, authority, account_number, bank_code, bank, citizenship, use, street, place, country, note, profile, user, type_of_contact) VALUES (
 "'.mysql_real_escape_string($_POST['salutation']).'",
 "'.mysql_real_escape_string($_POST['academic_title']).'",
 "'.mysql_real_escape_string($_POST['surname']).'",
 "'.mysql_real_escape_string($_POST['first_name']).'",
 "'.mysql_real_escape_string($_POST['birthday']).'", 
 "'.mysql_real_escape_string($_POST['national_insurance_number']).'", 
 "'.mysql_real_escape_string($_POST['occupation']).'",  
 "'.mysql_real_escape_string($_POST['phone_number']).'",
 "'.mysql_real_escape_string($_POST['occupational']).'",
 "'.mysql_real_escape_string($_POST['mobile_phone']).'",
 "'.mysql_real_escape_string($_POST['fax']).'",
 "'.mysql_real_escape_string($_POST['email']).'", 
 "'.mysql_real_escape_string($_POST['type']).'",
 "'.mysql_real_escape_string($_POST['number']).'",
 "'.mysql_real_escape_string($_POST['date']).'",
 "'.mysql_real_escape_string($_POST['authority']).'",                                    
 "'.mysql_real_escape_string($_POST['account_number']).'", 
 "'.mysql_real_escape_string($_POST['bank_code']).'",
 "'.mysql_real_escape_string($_POST['bank']).'",
 "'.mysql_real_escape_string($_POST['citizenship']).'",
 "'.mysql_real_escape_string($_POST['use']).'", 
 "'.mysql_real_escape_string($_POST['street']).'",
 "'.mysql_real_escape_string($_POST['place']).'",
 "'.mysql_real_escape_string($_POST['country']).'",
 "'.mysql_real_escape_string($_POST['note']).'",
 "'.mysql_real_escape_string($_POST['profile']).'",
 "'.mysql_real_escape_string(test).'",
 "'.mysql_real_escape_string($_POST['type_of_contact']).'")';
mysql_query($sql) OR die(mysql_error());

Ich hoffe ihr könnt mir helfen.
Thx
 
"use" ist ein MySQL Keyword und muss deshalb maskiert werden.

SQL:
(salutation, academic_title, surname, first_name, birthday, national_insurance_number, occupation, phone_number, occupational, mobile_phone, fax, email, type, number, date, authority, account_number, bank_code, bank, citizenship, `use`, street, place, country, note, profile, user, type_of_contact)

Generell ist zu empfehlen dies mit allen Tabellen und Spaltennamen zu tun.
 
Hi
Danke für deine schnelle Antwort, das mit dem use wusste ich gar nicht....
Hab das jetzt geändert, aber jetzt bekomme ich folgenden Fehler:
PHP:
Table 'usr_web14_25.private_clients' doesn't exist
 
Ja, der Fehler ist doch recht selbsterklärend?

Anscheinend existiert die Tabelle nicht auf die du zugreifen willst.
Ist die richtige Datenbank ausgewählt?
Existiert die Tabelle vielleicht wirklich nicht?
Steht in "$mysql_private_clients" das Richtige drin?
 
Was der Fehler bedeutet wusse ich, denn so gut kann ich gerade noch englisch ^^
Aber die Tabelle existiert, ich hab auch schon statt der Variable einfach den Tabellenname eingetragen, aber der Fehler ist immer noch da
 
PHP:
$sql = 'INSERT INTO '.$mysql_private_clients.'(salutation, academic_title, surname, first_name, birthday, national_insurance_number, occupation, phone_number, occupational, mobile_phone, fax, email, type, number, date, authority, account_number, bank_code, bank, citizenship, use, street, place, country, note, profile, user, type_of_contact) VALUES (
 "'.mysql_real_escape_string($_POST['salutation']).'",
 "'.mysql_real_escape_string($_POST['academic_title']).'",
 "'.mysql_real_escape_string($_POST['surname']).'",
 "'.mysql_real_escape_string($_POST['first_name']).'",
 "'.mysql_real_escape_string($_POST['birthday']).'", 
 "'.mysql_real_escape_string($_POST['national_insurance_number']).'", 
 "'.mysql_real_escape_string($_POST['occupation']).'",  
 "'.mysql_real_escape_string($_POST['phone_number']).'",
 "'.mysql_real_escape_string($_POST['occupational']).'",
 "'.mysql_real_escape_string($_POST['mobile_phone']).'",
 "'.mysql_real_escape_string($_POST['fax']).'",
 "'.mysql_real_escape_string($_POST['email']).'", 
 "'.mysql_real_escape_string($_POST['type']).'",
 "'.mysql_real_escape_string($_POST['number']).'",
 "'.mysql_real_escape_string($_POST['date']).'",
 "'.mysql_real_escape_string($_POST['authority']).'",                                    
 "'.mysql_real_escape_string($_POST['account_number']).'", 
 "'.mysql_real_escape_string($_POST['bank_code']).'",
 "'.mysql_real_escape_string($_POST['bank']).'",
 "'.mysql_real_escape_string($_POST['citizenship']).'",
 "'.mysql_real_escape_string($_POST['use']).'", 
 "'.mysql_real_escape_string($_POST['street']).'",
 "'.mysql_real_escape_string($_POST['place']).'",
 "'.mysql_real_escape_string($_POST['country']).'",
 "'.mysql_real_escape_string($_POST['note']).'",
 "'.mysql_real_escape_string($_POST['profile']).'",
 "'.mysql_real_escape_string(test).'",
 "'.mysql_real_escape_string($_POST['type_of_contact']).'")';
echo $sql;

Lass es dir mal ausgeben und kopiere den String in phpMyAdmin um ihn zu testen.

PHP:
"'.mysql_real_escape_string(test).'",
Hier ist übrigens ein Syntaxfehler. Er würde an dieser Stelle eine Konstante namens "test" suchen. Allerdings vermute ich, dass diese nicht existiert. Falls du einen String übergeben willst, solltest du diesen in Anführungszeichen maskieren.

Ist es denn die richtige Datenbank?
Denn ich denke weiterhin, dass es sich um einen Anwendungsfehler handelt, nicht um einen Fehler in MySQL.
 
Hi
Ok du hattest recht ich habe statt db 26 die 25 ausgewählt ^^
Aber nun bekomme ich diesen Fehler:
PHP:
Column count doesn't match value count at row 1
Ich werd langsam verrückt....
 
Könntest du mal die Ausgabe von $sql mal posten?

Und hast du meinen zweiten Hinweis ebenfalls korrigiert/überarbeitet?
 
Hi
Hier ist die Ausgabe von $sql
PHP:
INSERT INTO `private_clients`(`salutation`, `academic_title`, `surname`, `first_name`, `birthday`, `national_insurance_number`, `occupation`, `phone_number`, `occupational`, `mobile_phone`, `fax`, `email`, `type`, `number`, `date`, `authority`, `account_number`, `bank_code`, `bank`, `citizenship`, `use`, `street, place`, `country`, `note`, `profile`, `user`, `type_of_contact`) VALUES ( "Herr", "0", "test", "test", "1991.10.19", "test", "1", "test", "test", "test", "test", "test", "----", "test", "test", "test", "test", "test", "test", "test", "Hauptwohnsitz", "test", "test", "test", "test", "test", "", "Kunde")

Und das mit dem Fehler hab ich schon geändert, ich habs in
PHP:
 "'.mysql_real_escape_string($_SESSION['user_username']).'",
geändert, denn so gehört es eigtl. eh, aber ich bin nicht eingeloggt, darum ist das Feld noch leer.
 
Code:
`street, place`

Da ist dein Fehler.
Durch das Vergessen der zwei ` denkt MySQL es wäre eine Spalte... Merkt allerdings nicht, dass diese nicht existiert, der anscheinend erst überprüft wird ob für jede Spalte ein Inhalt gesetzt ist.
 
Zurück