SQL Problem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
anrede
code
datei
datenbank
ergebnis
funktion
http
manual
nachname
problem
quelle
server
setzen
text
umlaut
url
verwenden
weben
webseite
-
Hallo zusammen,
ich habe ein Problem mit einer MYSQL Abfrage. Ich möchte bestimmte Felder einer Datenbank selektieren und ausgeben. ich benutze folgenden Code um die entsprechenden Felder zu selektieren:
$nachname = mysql_query("SELECT `nachname` FROM members WHERE user = '$username' LIMIT 1 "); $nachname2 = mysql_num_rows($nachname); $anrede = mysql_query("SELECT `anrede` FROM members WHERE user = '$username' LIMIT 1 "); $anrede2 = mysql_num_rows($anrede);
nun erhalte ich aber nicht die Anrede und den Nachnamen des Users sondern ich erhalte das Resultat:
1
1
hier der Link zur Datei:
http://your-destiny.lima-city.de/update.php
ich hoffe einer kann helfen.
Gruß -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du gibst das ganze auch nicht aus, du zählst es.
mysql_num_rows zählt die Anzahl der Ergebnisse der Query, und gibt nicht das angeforderte Objekt aus.
Zur Ausgabe, siehe hier: http://www.php-einfach.de/einf_mysql_einfache_abfrage.php -
Das Ergebnis, das du bekommst, ist auch vollkommen korrekt: du fragst mit mysql_num_rows, wieviele Datensätze das Ergebnis beinhaltet. Das Ergebnis ist 1.
Du solltest aber eine geeignetere Funktion nutzen, um das Ergebnis selbst zu bekommen, beispielsweise:
$result = mysql_fetch_object($nachname); //beinhaltet nun die gewünschte Zeile aus der Datenbank $nachname2 = $result->nachname; $anrede2 = $result->anrede;
Siehe dazu auch: http://www.php.net/manual/de/function.mysql-fetch-object.php
Im Übrigen solltest du beachten, dass bei einer Abfrage auch mehr als nur ein einziges, zutreffendes Ergebnis zurückgegeben werden können -
Zudem solltest du lieber mysqli verwenden, da mysql in der nächsten PHP Version nicht mehr unterstützt wird.
-
Danke für eure schnellen antworten.
jetzt funktioniert es.
@all-in1
reichr es aus, wenn ich einfach ein i bei allen Funktionen ranhänge oder muss ich auch die Funktionen ändern?
Gruß -
Die Syntax ist ein wenig anders. Hier ist ein komplettes Manuel mit einigen Beispielen dabei http://www.php.net/manual/de/book.mysqli.php. Die Befehle sind ähnlich. Musst nur bei einigen Konstrukten besonders in Schleifen aufpassen, da funktioniert mysqli etwas anders als mysql.
-
Danke! neuer Lesestoff für die nähsten Tage . . .
Eine Frage noch: weist Du wie man in mail() auch umlaute (ä,ö,ü,ß) verwenden kann?
Gruß -
Hier ist ein Zusammenspiel vieler Faktoren wichtig. Suche mal im Forum nach UTF-8, dann solltest du eigentlich alles wichtige finden.
Ganz wichtig ist, dass du deinen Quellcode auch in dem Format abspeicherst, in dem du es auf der Webseite anzeigen lässt und der Server auch eingestellt ist. Benutzt du noch eine Datenbank muss auch dort die Kollation entsprechend richtig sein. Dem Server kannst du per .htaccess Datei sagen, ob er in ISO oder UTF-8 ausliefern soll. -
hallo,
ich verwende den iso-Zeichensatz Auf der Webseite wird auch alles korekt angezeigt aber wenn ich eine Mail versende mit umlauten im Text werden diese nicht so angezeigt wie sie es sollten sondern so:
ü ö ä
die Webseiten Einstellungen harmonieren auch mit der Datenbank das ist kein Problem und wird auch korrekt in der mail angezeigt nur die umlaute, die ich als Text hinzufüge nicht.
Gruß -
Die Datei ist auch in ISO abgespeichert?
Der Server sendet auch in ISO?
Und die Datenbank steht auf latin? -
die Datei verwendet ISO
Kann ich nicht genau herausfinden gehe aber von ja aus weil es ein ubuntuserver (deutsch) ist
ja
Das Problem hat aber nichts mit der Datenbank zutun. Diese wird richtig ausgewertet und versendet. Beispiel:
$betreff = "Passwort vergessen - Caching-with-web.org"; $mailtext = "$anrede\nSie haben vor kurzem eine Passwortanfrage auf http://www.caching-with-web.org/ durchgefürt. Wir senden Ihnen nun ihr neues Passwort zu, das Sie in Ihrem Profil auf http://www.caching-with-web.org/members-page.php ändern können. \n\nIhr neuse Passwort lautet:\n\n$newpass \n\nSie können sich ab sofort mit diesem Passwort auf http://www.caching-with-web.org/ anmelden. \n\nSollten Sie keine Passwortanfrage gesendet haben bitten wir für die Unannehmlichkeiten um Entschuldigung.\n\n\nIhr Caching-with-web.org Team"; $from = "From: accountsave@caching-with-web.org"; mail ($email, $betreff, $mailtext, $from );
ergiebt folgende Ausgabe per mail:
Sehr geehrter Herr Fröhlich, Sie haben vor kurzem eine Passwortanfrage auf http://www.caching-with-web.org/ durchgefürt. Wir senden Ihnen nun ihr neues Passwort zu, das Sie in Ihrem Profil auf http://www.caching-with-web.org/members-page.php ändern können. Ihr neuse Passwort lautet: A8jkW8K7 Sie können sich ab sofort mit diesem Passwort auf http://www.caching-with-web.org/ anmelden. Sollten Sie keine Passwortanfrage gesendet haben bitten wir für die Unannehmlichkeiten um Entschuldigung. Ihr Caching-with-web.org Team
man sieht die Datenbankabfrage wird korekt ausgewertet nur die Umlaute in dem Text nicht -
all-in1 schrieb:
Zudem solltest du lieber mysqli verwenden, da mysql in der nächsten PHP Version nicht mehr unterstützt wird.
Hast du dafür eine Quelle? Denn da kann ich beim besten Willen nichts drüber heraus finden.
Bis PHP 5.7 (die sich momentan nur in einer sehr frühen Entwicklerversion befindet) ist die Unterstützung auf jeden Fall sicher gestellt, was durüber hinaus kommt, ist wohl eher Kaffeesatzlesen. -
Hast du dafür eine Quelle? Denn da kann ich beim besten Willen nichts drüber heraus finden.
Bis PHP 5.7 (die sich momentan nur in einer sehr frühen Entwicklerversion befindet) ist die Unterstützung auf jeden Fall sicher gestellt, was durüber hinaus kommt, ist wohl eher Kaffeesatzlesen.
hier da?
http://php.net/manual/en/migration55.deprecated.php
Ich sehe das auch so, dass man bei Neuentwicklungen in jedem Fall auf mysqli setzen sollte, und nicht auf Funktionen, die bereits deprecated-Wanungen auswerfen... -
burgi schrieb:
Hast du dafür eine Quelle? Denn da kann ich beim besten Willen nichts drüber heraus finden.
Bis PHP 5.7 (die sich momentan nur in einer sehr frühen Entwicklerversion befindet) ist die Unterstützung auf jeden Fall sicher gestellt, was durüber hinaus kommt, ist wohl eher Kaffeesatzlesen.
hier da?
http://php.net/manual/en/migration55.deprecated.php
Ich sehe das auch so, dass man bei Neuentwicklungen in jedem Fall auf mysqli setzen sollte, und nicht auf Funktionen, die bereits deprecated-Wanungen auswerfen...
Als "nicht mehr unterstützt" würde ich verstehen, dass die Funktionen nicht mehr funktionieren. Deswegen war ich da gerade ein wenig überrascht.
Aber ich stimme ganz und gar zu, dass man bei neuen Projekten eher auf MSQLi setzen sollte. -
Wo hast du denn die Textbausteine her?
Kannst du die betreffenden Dateien mal als zip Datei irgendwo bereitstellen?
@tct
Ist es nicht so, dass depracated bedeutet, dass diese Funktionen in Zukunft wegfallen werden? -
ich habe auf http://your-destiny.lima-city.de/update.txt den code bereitgestellt. Der Hauptteil ist zwischen den **** - im Original sind jedoch die Umlaute geschrieben und nicht die zu sehenden zeichen
-
Ich wollte die Datei im Original, und nicht den kopierten Code. Deine Emailadresse, falls die darin stehen sollte kannst du vorher löschen.
Achso, falls die Datei irgendwo includiert wird, dann benötige ich auch die Datei. -
Achsoo...
die Originaldatei kanst du dir unter http://www.testing.caching-with-web.org/download.php herunterladen. Es ist nicht der Komplette Teil sondern nur der Relewante (login, buttons, links etc. sowie die nebenspalten der Tabelle sind nicht enthalten) Dieser ist nehmlich ca 1500 zeilen lang und daran kann es nicht liegen -
all-in1 schrieb:
@tct
Ist es nicht so, dass depracated bedeutet, dass diese Funktionen in Zukunft wegfallen werden?
Depracated heißt "veraltet", das bedeutet aber nicht, dass die Funktionen gleich in der nächsten PHP Version abgeschafft werden. Sollten Probleme mit den Funktionen auftreten oder es zu irgendwelchen Inkompatibiläten kommen, wird das nicht mehr ausgebessert werden und wahrscheinlich werden sie irgendwann dann auch wegfallen. [spekulation]
Aber das würde ich nicht vor dem nächsten großen Versionsupdate (also PHP 6) erwarten und wann das kommt ist bisher unbekannt.
[/spekulation]
Aber man muss sich nur einmal überlegen, wieviele Skripte die Kombination PHP/MySQL verwenden, würde man den Support dafür von heute auf morgen einstellen, wäre der Aufschrei sicherlich groß. -
Da ich jetzt nach dem Download auch schon die Umlaute falsch dargestellt bekomme, versuche mal in die .htaccess folgendes hinein zu schreiben.
AddDefaultCharset ISO-8859-1
Ein anderer Fehler könnte sein, dass die Datei früher mal in UTF-8 gespeichert war und nachträglich nicht richtig in westeuropäisch konvertiert wurde.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage