Zeile in Datenbank schreiben nicht möglich
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfragen
angeben
aufruf
auswahl
code
datenbank
ergebnis
fragestellung
funktion
host
http
kenntnis
parameter
syntax
tabelle
umstand
url
vier
vorliegen
zeile
-
Hallo zusammen,
ich hab ein Problem mit folgendem Code:
Ich möchte damit eine Zeile in die Datenbank `aufrufe` schreiben.<?php $db_link=mysql_connect('mysql.lima-city.de','USER******','***') or die('Error'); $sql=" INSERT INTO `aufrufe` ( `seite` , `zeit` , `ip` , `parameter` ) VALUES ( 'index.php' , 'irgendwann', 'irgendwer', 'nicht abgefragt' ); "; mysql_query($sql); echo mysql_error(); ?>
die Zeile 'echo mysql_error();' liefert mir "No database selected".
Ich hoffe mir kann jemand helfen. Vielleicht ist es auch nur ein Schreibfehler oder ein fehlendes Zeichen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
die Zeile 'echo mysql_error();' liefert mir "No database selected".
Und warum selectest du dann keine? Ich sehe den Aufruf der Datenbankverbindung und einen Insert, jedoch keine Datenbankauswahl :)
Beitrag zuletzt geändert: 19.3.2012 19:13:21 von fabo -
Dir fehlt einfach die Auswahl einer Datenbank
mfgmysql_select_db("********") or die ("Die Datenbank existiert nicht");
-
Vielen Dank für den Tipp.
Ich wusste nicht, dass man nach mysql_connect noch mysql_select_db braucht.
Auf jeden Fall funktioniert es jetzt. -
fuerderer schrieb:
$db_link=mysql_connect('mysql.lima-city.de','USER******','***') or die('Error');
Ich möchte damit eine Zeile in die Datenbank `aufrufe` schreiben.
Dein Code zeigt 3 Parameter (host, User und Passwort), benötigt werden aber derer vier (der Datenbankname fehlt)
Du kannst abfragen, was Du willst, solange Mysql nicht weiß, wo es danach suchen soll, wirst Du kein Ergebnis erhalten.
Edit: Meine Antwort war kalinistisch. Sorry, aber den Beitrag von Fabo, der genau gleiches sagt, hab ich, warum auch immer, überlesen. *schäm*
Beitrag zuletzt geändert: 20.3.2012 13:38:50 von fatfreddy -
fuerderer schrieb:
das solltest du aber nicht möchten, weil du bei lima keine datenbank namens aufrufe hast ;)
Ich möchte damit eine Zeile in die Datenbank `aufrufe` schreiben...... $sql=" INSERT INTO `aufrufe` ( `seite` , ... ...
fabo schrieb:
weil man nicht explizite eine datenbank selektieren muss?¿die Zeile 'echo mysql_error();' liefert mir "No database selected".
Und warum selectest du dann keine?)
syberpsace schrieb:
nein. ihm fehlt das nicht (unbedingt ;)
Dir fehlt einfach die Auswahl einer Datenbank
mfgmysql_select_db("********") or die ("Die Datenbank existiert nicht");
fuerderer schrieb:
also noch immer: du brauchst nicht (unbedingt) mysql_select_db('<database>') oder mysql_query('USE <database>') [was ident ist].
... Ich wusste nicht, dass man nach mysql_connect noch mysql_select_db braucht.
Auf jeden Fall funktioniert es jetzt.
fatfreddy schrieb:
es ist richtig, dass die funktion 4 parameter hat, die sind allerdings allesamt optional (für den günstigen fall ;)
... Dein Code zeigt 3 Parameter (host, User und Passwort), benötigt werden aber derer vier (der Datenbankname fehlt) ...
es ist aber richtig, dass ihm die datenbank fehlt, was aber auch so gehen kann:
(vorsicht! '123456' in username und datenbankname! außerdem kannst in der query auf die blöden backticks überall verzichten, sie werden nur gebraucht um reservierte wörter zu maskieren.)<?php ... $conn = mysql_connect(['mysql.lima-city.de', 'USER123456', '<passwd>']); $sql = <<< EOT INSERT INTO db_123456_n.aufrufe -- COLUMNS: (seite, zeit, ip, parameter) VALUES ('index.php', 'irgendwann', 'irgendwer', 'nicht abgefragt') EOT; $res = ($r = mysql_query($sql)) ? $r: exit('<pre>' . print_r(array(mysql_errno(), mysql_error()), true)); // wenn kein fehler, hier geht es weiter.
der sinn der sache ist dann klar, wenn man bedenkt, dass es möglich ist mehrere datenbanken gleichzeitig abzufragen:
literatur zum reinziehen:SELECT <alias_1>.<column_1>, <alias_2>.<column_2> FROM <database_1>.<table_1> [AS] <alias_1>, <database_2>.<table_2> [AS] <alias_2> ...
1. SELECTSie können eine Tabelle in der Standarddatenbank*) als tbl_name oder – wenn Sie eine Datenbank ausdrücklich angeben wollen – als db_name.tbl_name referenzieren. Eine Spalte können Sie als col_name, tbl_name.col_name oder db_name.tbl_name.col_name referenzieren. Sie müssen das Präfix tbl_name oder db_name.tbl_name für eine Spaltenreferenzierung nicht angeben, sofern die Referenzierung eindeutig ist. Beispiele für Mehrdeutigkeiten, die die spezifischeren Formen der Spaltenreferenzierung erfordern, finden Sie in
Abschnitt 9.2
(Standarddatenbank*) ist die, die man explizite [mysql_select_db(...) / 'USE <database>'] ausgewählt hat ;)
2. um es noch besser zu verstehen: 9.2.1. Qualifikatoren für Bezeichner
es musste leider ins rechte licht gerückt werden ;) -
hemiolos schrieb:
fuerderer schrieb:
das solltest du aber nicht möchten, weil du bei lima keine datenbank namens aufrufe hast ;)
Ich möchte damit eine Zeile in die Datenbank `aufrufe` schreiben...... $sql=" INSERT INTO `aufrufe` ( `seite` , ... ...
Nach allgemeiner MySql-Syntax wäre beim "Insert into aufrufe" "aufrufe" der Name einer Tabelle innerhalb einer vorher (hier fehlerhaft) aufgebauten Datenbankverbindung.
fatfreddy schrieb:
... Dein Code zeigt 3 Parameter (host, User und Passwort), benötigt werden aber derer vier (der Datenbankname fehlt) ...
es ist richtig, dass die funktion 4 parameter hat, die sind allerdings allesamt optional (für den günstigen fall ;)
Optional sind die Parameter aber nur dann, wenn eine Auslassung nicht zu Interpretationsproblemen führt. ;) Ein Umstand, der aus der Fragestellung nicht hervorgeht. Ob wir hier den "günstigsten Fall" vorliegen haben, entzieht sich unserer (der Antwortenden) Kenntnis
-
fatfreddy schrieb:
ja klar. aber was willst mit dem satz eigentlich sagen? niemand behauptete, dass es in diesem speziellen fall so richtig sein sollte.
Nach allgemeiner MySql-Syntax wäre beim "Insert into aufrufe" "aufrufe" der Name einer Tabelle innerhalb einer vorher (hier fehlerhaft) aufgebauten Datenbankverbindung.
das weiter zu diskuttieren ist an sich redundant. ich habe alle wichtigen links in meinem beitrag angegeben. lesen sollte jeder selber in der lage sein, sonst nimmt das hier nie ein ende ;)
Optional sind die Parameter aber nur dann, wenn eine Auslassung nicht zu Interpretationsproblemen führt. ;) Ein Umstand, der aus der Fragestellung nicht hervorgeht. Ob wir hier den "günstigsten Fall" vorliegen haben, entzieht sich unserer (der Antwortenden) Kenntnis -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage