» mysql_query(......) "Spalte"/"Variable" lässt sich nicht mit einer Eingabe vergleichen

Top PHP Profi gesucht!Neuen Thread eröffnenNeue Antwort erstellenKennt sich jemand mit Perl aus?
AutorNachricht
Beobachter 
Anmeldedatum: 26.05.2012
Beiträge: 8
Chats: 25
19.07.2012, 14:05
zitieren

Hey,
ich will eine ganz normale Abfrage machen, ob der vom Nutzer eingegebene Name/Wert bereits irgendwo in der Datenbank vorhanden ist. So sieht das bei mir aus:

$nogroups = mysql_query( "SELECT * FROM memberinformation WHERE nickname = ".$_POST["username"]  );

if( $nogroups == "" )
{......

Ich mache da gleich die if-Abfrage, weil die "Varible" doch keinen Wert haben dürfte, wenn die Bedingung aus dem query nicht erfüllt wird, oder?

Ich habe auch schon versucht Leerzeichen an die Eingabe dran zu hängen, als die "Spalte"/"Variable" nickname noch vom Typ "CHAR" war. Jetzt ist sie vom Typ "VARCHAR" mit Platz für 20 Zeichen.

Und selbstverständlich bin ich mir sicher, dass der Wert der Eingabe grundsätzlich gleich mit dem Inhalt der "Spalte"/"Variable" sein sollte. Habe auch in meinem Quelltext dafür eine if-Abfrage gemacht, wobei hier der Inhalt der Tabelle in Arrays "aufgeteilt" wird und dann halt verglichen wird. Da wurde angezeigt, dass der Inhalt identisch ist, hier wird es nicht angezeigt.

Würde mich WIRKLICH über eine Lösung freuen. Hätte auch nichts dagegen, wenn mir jemand erklärt, was ich falsch gemacht habe ^^.

Bedanke mich schon ma im Voraus.

Mit freundlichem Gruß

Section


pn
Newbie 
Anmeldedatum: 29.05.2012
Beiträge: 13
Chats: 0
21.07.2012, 09:24
zitieren

Hier gibts mehrere Fehler. mysql_query gibt keinen String zurück, sondern eine ressource. Darüber hinaus: niemals GET/POST Vars unescaped in eine sql query übernehmen. Programmierern ist das manchmal egal; User allerdings nicht. Sowas ist wirklich wichtig. Du erwartest eine Zeile oder keine Zeile als Rückgabe; daher würde ich das Ganze mit LIMIT 1 limitieren. Dann erscheint mir auch das query falsch zu sein. Wenn eine Spalte mit einem String verglichen wird, braucht es 'var'. Genug gemeckert, hier die Lösung, wie ich sie machen würde.

$username = $_POST['username'];
$username = mysql_real_escape_string($username);

$query = sprintf("SELECT id from memberinformation
    WHERE nickname='%s' LIMIT 1",
    $username);

$result = mysql_query($query);

// hier kannst du dann überprüfen, ob die rückgabe leer ist oder eine id vorhanden ist
while ($row = mysql_fetch_assoc($result)) {
    echo $row['id'];
}

mysql_free_result($result);


Noch ein paar Konventionen: Tabellen Namen im Plural und nickname mit username angleichen. Du meinst das Gleiche => nenn sie gleich.


pn email
Beobachter 
Anmeldedatum: 26.05.2012
Beiträge: 8
Chats: 25
23.07.2012, 12:17
zitieren

Hey,
danke für deine Antwort. Scheint auch zu funktionieren ^^. Cool ^^.
Hätte da einige Fragen zu deiner Antwort.

- "ressource" ? Was bedeutet das?
- "GET/POST Vars unescaped" ? Was bdeutet das?
-
ZitatProgrammierern ist das manchmal egal; User allerdings nicht
Wie meinst das? War doch falsch ^^ und die User werden zumeist kaum was von dem Mitbekommen, was sich im "Hintergrund" abspiellt. Wenn du meinst, dass es irgendwie Sicherheitslücken, mögliche Fehlerquellen oder sonst was enthalten kann, dann sollte das doch auch einem Programmierer nicht egal sein, oder eher gerade ihm.

- "sprintf" ? Wieso verwendest das und nicht "mysql_query(...)"?
- '%s' ? Was bewirkt das?

- 'var' ? Ist das der "Variablentyp"? Wo ist der Unterschied zu einem "string" und was ist es, wenn kein string?
- "$result = mysql_query($query);" ? Ich errinere mich grad nur daran, dass bei queries unter anderem strings als Parameter übergeben wurden, die "Anweisungen" enthielten und das ist hier scheinbar nicht der Fall. Hier wurde doch "nur" eine "Variable" übergeben, oder? Wie funktioniert das?
- "mysql_free_result($result);" Was bewirkt das?

Kannst du mir sagen, wo man all das lernen kann ^^' ? Ich meine im Internet.

Ach und soweit ich weiß steht "information"(im Englischen, was es hier auch ist. Ist an dem Begriff "member", was ja auch Englisch ist, zuerkennen) sowohl für die Mehr-, als auch für die Einzahl.

Und noch mal danke für die Antwort.

Mit freundlichem Gruß
Section


 1x  bearbeitet
pn
Newbie 
Anmeldedatum: 29.05.2012
Beiträge: 13
Chats: 0
23.07.2012, 12:34
zitieren

und los gehts.
Zitat- "ressource" ? Was bedeutet das?
Das ist ein spezieller Datentyp, wenn du so willst. Wenn du eine Datenbankverbindung hast oder auch eine Datei öffnest, arbeitest du damit. http://de.php.net/manual/en/language.types.resource.php
Zitat- "GET/POST Vars unescaped" ? Was bdeutet das?
Mit GET und POST kann man vom Browser Daten an das Skript übergeben. Es können enorme Sicherheitslücken entstehen, wenn man diese Daten nicht checked/escaped. http://de.php.net/manual/en/function.mysql-real-escape-string.php
Zitat- "sprintf" ? Wieso verwendest das und nicht "mysql_query(...)"?
- '%s' ? Was bewirkt das?
Hiermit formatierst du einen String und schickst ihn mit %s in dein sql query. http://de.php.net/manual/en/function.sprintf.php
Zitat- 'var' ?
Ich meinte damit nur ''. Die Hochkommata.
Zitat"$result = mysql_query($query);" ?
Wir haben den String in die Variable $query geladen. Es wird also ein String übergeben.
Zitat"mysql_free_result($result);"
Die ressource wird aus dem Speicher gehauen.

Man lernt das auf php.net; hier kann man auch jeden Befehl nachschlagen. Würd mir evtl. ein Buch kaufen und viel programmieren; nur dadurch lernt man und checkt, was sich im Hintergrund so tut.


pn email
Beobachter 
Anmeldedatum: 26.05.2012
Beiträge: 8
Chats: 25
23.07.2012, 13:09
zitieren

Aaa okey. Danke für die schnelle Antwort.

pn
Gast 
23.07.2012, 13:09
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "mysql_query(......) "Spalte"/"Variable" lässt sich nicht mit einer Eingabe vergleichen" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...

Zu ing diba, mysql query und www programmierer forum.de findest Du weitere passende Themen in der Suche.


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
ein "nicht honda fahrer" mit "hondapower" braucht eure hilfe
hallo forum, ich habe hier ein wenig rumgestöbert und brauch enun mal dringend eure hilfe. ich fahre einen alten klassischen mini (cooper), den ich die letzten 1,5 jahre auf honda ed9 d16z5 umgebaut habe. das ganze ist in einem eigenbaurahmen und...
von kelmiinthafirma
4
2.752
16.07.2009, 09:04
kelmiinthafirma
Stromanbieter "Stromio" mit "Basic" und "Basic Bonus"?!
Kann mal jemand auf die Startseite von Stromio gehen und dort das "Ermitteln Sie Ihr persönliches Preisangebot" ausfüllen und absenden? http://www.stromio.de/ Was kommt da? Basic mit 15% oder Basic Bonus mit 25%? Ich habe keine Ahnung warum,...
von mgutt
8
442
30.01.2014, 10:53
Dreffi
Mit was bekomme ich am besten am Heck "Civic"& "1.4"weg???
Ich hoffe ihr könnt mir da ein paar Tipps...
von styler91
14
1.600
19.01.2010, 16:37
BlackCivic86
Ps3 und Fernseher "mögen" sich nicht mehr
Würde mich mal interessieren ob noch jemand diese Problem hat. Meine PS3 Slim 250 gb seit ca 6-8 Monaten in meinem Besitzt und mein LG M237WD Hybrid Monitor scheinen sich plötzlich ned mehr zu mögen o.O. Folgende Geschichte: Hab den einen Abend...
von Kinimaro
8
881
18.10.2010, 09:31
Kinimaro
"Verwaltung" unter Programme lässt sich nicht löschen
Hi, ich habe neuerdings einen leeren Ordner unter Start -> Programme namens "Verwaltung". Keine Ahnung warum der plötzlich da ist. Der befindet sich ja eigentlich unter "Zubehör". Naja da er leer ist, wollte ich ihn löschen. Allerdings...
von mgutt
7
481
02.02.2010, 17:20
nfs_freak
Kennt/hat einer Gurtpolster mit "the power of.." aufschrift?
Gibts sowas ? Finde einfach nichts :(:(:( Optional auch nur "honda" oder "civic coupe" oder...
von mister.knister
3
199
16.11.2009, 16:56
u$aki
Unterschiede zwischen einer "Standard" Domstrebe und einer 3-Punkt?
Moin! :D Würde mal gerne wissen ob es einen spürbaren Unterschied gibt bzw. es sich bemerkbar macht im Fahrverhalten wenn man anstatt der Standard Domstrebe eine 3-Punkt Strebe verwendet?! Ich mein...119€ und 250€ sind für mich schonmal...
von °Phunder Bird°
14
494
21.01.2014, 21:30
Lori-DC2
2.Civic FK-FN "UFO" Treffen Goslar "Reloaded" 18-20.06.2010
Hallo! Wenn einer von Euch auch noch Lust hat mit auf das Treffen zu fahren..... Wir fahren z.b mit 3 UFOs hin...... Mehr Infos...
von s2000vtec
0
1.160
31.03.2010, 09:13
s2000vtec
Civic MB2 2131/313 "1999" Scheibenbremse/Beläge hinten "Größe"???
Hallo Leutz, ich habe da mal ein Problem. Ich wollte bei einem Bekannten an seinem Honda Civic HSN:2131 / TSN:313; Baujahr 09.1999; 66KW 5-Türer (Fastback) die hintere Bremse Wechseln (beide Scheiben und Beläge) Nun habe ich im Internet (ebay u.s.w.)...
von Sisko865
6
78
17.08.2014, 18:27
Blues
Frechen 02.07.2010 "Japan wird Weltmeister" - "doch nich =("
so wer kommt diesen freitag...
von Toby1991
39
4.057
05.07.2010, 20:40
stoffi88
© 2004 - 2016 www.programmierer-forum.de | Communities | Impressum |