um direkt eine Probleme am Anfang zu lösen:
- ich bin MySQL und PHP-Anfänger
Wir sollen eine Abfrage generieren in der man über ein Listen-Menü und eine Schaltfläche Räume auswählen und nachdem man dieses getan hat kommt die Liste mit den PC´s, IP-Adressen und den anderen Infos dazu ...
Die Liste funktioniert nur das Menü mit dem man das wählen kann erzeugt diesen Fehler:
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 '' at line 1
Sobald man die WHERE Begrenzung rausnimmt, ist alles ok, nur man kann eben nix auswählen!
Nun bitte ich einen Erfahren PHP-Guru sich mal meine vergurkte PHP-Butze anzusehen um mir dann meinen warscheinlich höchst lächerlichen Fehler ins Gesicht zu spucken ;)
Desweiteren solltest du Werte, welche per POST oder GET übermittelt werden niemals ungefiltert in ein SQL-Query übernehmen!
Hierfür bietet sich die Funktion mysql_real_escape_string() an.
Bsp.:
PHP-Code:
$query_computer =
"SELECT * ".
"FROM computer ".
"INNER JOIN os ON computer.os_id=os.os_id ".
"INNER JOIN os_hersteller ON os.os_hersteller_id=os_hersteller.os_hersteller_id ".
"INNER JOIN raum ON computer.raum_id=raum.raum_id ".
"WHERE raum.raum_id='".mysql_real_escape_string($spec)."'";
Auch dürfen zwischen dem "="-Zeichen und den Spaltennamen/Werten, welche geprüft werden sollen, keine Leerzeichen stehen!
um direkt eine Probleme am Anfang zu lösen:
- ich bin MySQL und PHP-Anfänger
Hallo und willkommen hier im Forum.
PHP-Code:
$query_device = "SELECT * FROM device
INNER JOIN devicetyp ON device.devicetyp_id = devicetyp.devicetyp_id
INNER JOIN device_hersteller ON device.device_hersteller_id = device_hersteller.device_hersteller_id
ORDER BY device.device_ip
WHERE raum.raum_id = $spec";
ORDER BY kommt nach WHERE.
WHERE hat keinen Bezug in SELECT / INNER JOIN
__________________
Gruss vt1816
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
mysql_select_db($database_verwaltung, $verwaltung);
$query_computer = "SELECT * ".
"FROM computer ".
"INNER JOIN os ON computer.os_id=os.os_id ".
"INNER JOIN os_hersteller ON os.os_hersteller_id=os_hersteller.os_hersteller_id ".
"INNER JOIN raum ON computer.raum_id=raum.raum_id ".
"WHERE computer.raum_id=$spec";
$row_computer = mysql_fetch_assoc($computer);
$totalRows_computer = mysql_num_rows($computer);
mysql_select_db($database_verwaltung, $verwaltung);
$query_device = "SELECT * FROM device INNER JOIN devicetyp ON device.devicetyp_id = devicetyp.devicetyp_id INNER JOIN device_hersteller ON device.device_hersteller_id = device_hersteller.device_hersteller_id WHERE computer.raum_id=$spec ORDER BY device.device_ip";
$device = mysql_query($query_device, $verwaltung) or die(mysql_error());
$row_device = mysql_fetch_assoc($device);
$totalRows_device = mysql_num_rows($device);
mysql_select_db($database_verwaltung, $verwaltung);
$query_raum = "SELECT * FROM raum ORDER BY raum.raum_name";
$raum = mysql_query($query_raum, $verwaltung) or die(mysql_error());
$row_raum = mysql_fetch_assoc($raum);
$totalRows_raum = mysql_num_rows($raum);
?>
Kommt 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 'ORDER BY device.device_ip' at line 1
Nehme ich nun in der Abfrage:
PHP-Code:
mysql_select_db($database_verwaltung, $verwaltung);
$query_device = "SELECT * FROM device INNER JOIN devicetyp ON device.devicetyp_id = devicetyp.devicetyp_id INNER JOIN device_hersteller ON device.device_hersteller_id = device_hersteller.device_hersteller_id WHERE computer.raum_id=$spec ORDER BY device.device_ip";
$device = mysql_query($query_device, $verwaltung) or die(mysql_error());
$row_device = mysql_fetch_assoc($device);
$totalRows_device = mysql_num_rows($device);
Das WHERE raus dann funktioniert die Seite, ich kann was wählen und unten wird via
PHP-Code:
<?php echo $spec; ?>
auch eben diese raum_id angezeigt aber in der Liste wo die PCs gelistet sind, wird garnix gezeigt.
Dreamweaver mag diese nicht-Dreamweaver eigene Ordnung nicht!
Es hat funktioniert, nach einer kurzen Änderung wieder nicht mehr ... als ich den Code rauskopiert und eingefügt habe ging es auch nicht ... ich bin ratlos, wie kann das gehen?
Fehlermeldung ist folgende:
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 '' at line 1
Geändert von Maggi (11.10.2011 um 11:16:53 Uhr)
Grund: Ich entschuldige meinen Doppelpost, ich war der annahme es geht aber scheinbar tut es das nicht!
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 '' at line 1
Kläre doch erst mal welche Deiner drei Abfragen den Fehler produziert.
__________________
Gruss vt1816
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Da liegt das Problem, ich kann es nicht rauskristallisieren.
Wenn ich quasi schonmal was ausgewählt habe, dann funktioniert alles wunderbar, also die WHERE Befehle löschen, speichern, das Dokument aufrufen, Raum auswählen, button anklicken ... nun wieder die WHERE Befehle eintragen, speichern, Raum auswählen, FUNKTIONIERT ... nur wenn ich jetzt das Dokument schließe und neu öffne bekomme ich genau diese Fehlermeldung erneut ...
Kann ich nicht nachvollziehen - wie kann sich eine bereits gespeicherte und funktionierende Datei ändern, nur wenn Du sie schließt?
Da muss doch noch etwas anderes passieren!?
__________________
Gruss vt1816
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Die Abfrage und alles funktioniert ja aber sobald meine Variable $spec leer ist bekomme ich eben besagt Fehlermeldung.
Wenn ich die WHERE Befehle einfach alle entferne dann gehts, nur er filtert nix ...
die Querys sehen wie folgt aus:
PHP-Code:
Query 1: SELECT * FROM computer INNER JOIN os ON computer.os_id=os.os_id INNER JOIN os_hersteller ON os.os_hersteller_id=os_hersteller.os_hersteller_id INNER JOIN raum ON computer.raum_id = raum.raum_id INNER JOIN dose ON computer.dose_id = dose.dose_id WHERE raum.raum_id=1 ORDER BY computer.computer_ip
Query 2: SELECT * FROM device INNER JOIN devicetyp ON device.devicetyp_id = devicetyp.devicetyp_id INNER JOIN device_hersteller ON device.device_hersteller_id = device_hersteller.device_hersteller_id INNER JOIN raum ON device.raum_id = raum.raum_id INNER JOIN dose ON device.dose_id = dose.dose_id WHERE raum.raum_id=1 ORDER BY device.device_ip
Query 3: SELECT * FROM raum ORDER BY raum.raum_name