php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 22-01-2010, 12:51
jaffi
 Registrierter Benutzer
Links : Onlinestatus : jaffi ist offline
Registriert seit: Jan 2010
Beiträge: 8
jaffi befindet sich auf einem aufstrebenden Ast
Standard user bereits vorhanden aber mysql_num_rows ergibt 0?

Und wieder komme ich nicht weiter
Ich versuche zu prüfen, ob ein User, bevor er angelegt wird bereits vorhanden ist. Dies versuche ich mit einem
Select Statement zu bewerkstelligen:
PHP-Code:
mysql_select_db("datenbank");
    
$sqluser "SELECT user_id FROM user WHERE user_id = ' " $_POST['user'] . " ' ";
    print 
mysql_error();
    
$abfrage mysql_query($sqluser)or die(mysql_error());
    print 
mysql_error();
    
$ergebnis mysql_num_rows($abfrage);
    print 
mysql_error();
    echo 
$_POST['user'];
    echo 
$ergebnis
es wird mir an keiner Stelle eine Fehlermeldung ausgegeben.
echo $_POST['user'] zeigt mir sauber den eingegebenen Wert. Der wird also richtig übergeben.
Allerdings bekomme ich als $ergebnis immer eine 0 obwohl der User in meiner db vorhanden ist.
Tausche ich die Form-Variable im Select-Statement einfach mit einer User_id als String aus,
findet er den User und gibt mir eine 1 aus. Nur mit $_POST['user_id']
klappt es nicht

Ich weis, das es noch gehen würde das mysql_error auszulesen, da die user_id in meiner db uniqe ist.
Allerdings empfinde ich das als nicht optimal, da das Script bei einem Fehler ja sterben würde und das nicht
heisst das es nicht auch ein anderer Fehler sein könnte. Zbsp. Server aus
oder ähnliches..

Habe ich irgendeinen Fehler in meiner Abfrage? Wir würdet Ihr solch eine Überprüfung umsetzen?
mit einem Select in der db oder mysql_error() auslesen?

Vielen Dank für eure Tips!
Mit Zitat antworten
  #2 (permalink)  
Alt 22-01-2010, 13:03
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

erstens musst du dich entscheiden, ob es ein SQL-Problem ist oder ein PHP-Problem. PHP-Code hat bei einem SQL-Problem nichts verloren und die Ursache liegt auch nicht bei MySQL, daher *move*.

Die Benennung deiner Variablen ist verwirrend (insbesondere $abfrage).

Dieses Script ist anfällig für SQL-Injections, weil du die POST-Daten ungeprüft in der Abfrage verwendest.

Der Fehler ist offensichtlich: Wenn du dir mal die Abfrage ($sqluser) ausgeben ließest, würdest du sehen, dass dort Leerzeichen um die User-Id drinstehen, die du selbst dort eingebaut hast.

Edit: Die Überprüfung durch Fehlerprovokation zu umgehen, halte ich für keine gute Idee, aber schlag im MySQL Handbuch mal "insert ... on duplicate key update" nach, denn das ist es, was du suchst.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (22-01-2010 um 13:08 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 22-01-2010, 13:30
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von jaffi Beitrag anzeigen
Ich weis, das es noch gehen würde das mysql_error auszulesen, da die user_id in meiner db uniqe ist.
Allerdings empfinde ich das als nicht optimal, da das Script bei einem Fehler ja sterben würde
Quark. Sterben tut es nur, wenn du es sterben lässt.

die() ist aber allgemein keine sinnvolle Fehlerbehandlung.

Zitat:
und das nicht heisst das es nicht auch ein anderer Fehler sein könnte.
Deshalb fragt man an einer solchen Stelle ab, welcher Fehler aufgetreten ist (über die Fehlernummer).
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #4 (permalink)  
Alt 22-01-2010, 13:50
jaffi
 Registrierter Benutzer
Links : Onlinestatus : jaffi ist offline
Registriert seit: Jan 2010
Beiträge: 8
jaffi befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Hallo,

erstens musst du dich entscheiden, ob es ein SQL-Problem ist oder ein PHP-Problem. PHP-Code hat bei einem SQL-Problem nichts verloren und die Ursache liegt auch nicht bei MySQL, daher *move*.
Bitte entschuldige das ich das als Anfänger nicht immer gleich
verifizieren kann...

Zitat:
Der Fehler ist offensichtlich: Wenn du dir mal die Abfrage ($sqluser) ausgeben ließest, würdest du sehen, dass dort Leerzeichen um die User-Id drinstehen, die du selbst dort eingebaut hast.
Die Leerzeichen hab ich wirklich übersehen, zumal sie in der Ausgabe auch nicht angezeigt wurden. Hätte ich selbst drauf kommen können. Jetzt funktioniert es!

Danke, wieder was gelernt!

P.S: nichts für ungut aber ich muss das mal loswerden: kann es sein das in diesem Forum keine "Absolut-Anfänger erwünscht sind?
Wenn man einige Antworten so liest bekommt man echt das Gefühl vermittelt als seien solche Fragen unerwünscht...

Ich hab aber mal gelernt es gibt keine doofen Fragen sondern nur doofe Antworten...;o) wie gesagt ist nicht böse gemeint,
wollte es nur mal los werden. Solche Foren sollen einem doch den Einstieg erleichtern und nicht das Gefühl geben das man sich
erst anmelden darf wenn man PHP und MySql auswendig kann !! ;o)

Tausend Dank und viele Grüsse
Mit Zitat antworten
  #5 (permalink)  
Alt 22-01-2010, 14:05
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von jaffi Beitrag anzeigen
Bitte entschuldige das ich das als Anfänger nicht immer gleich
verifizieren kann...
Dann empfehle ich folgende Faustregel: Benutze bei Mischcode den Teil, der für das Problem relevant ist. Die Sprache dieses Teils ist das erste Indiz für die Wahl des Forums.

Beispiel: PHP-generiertes HTML-Dokument mit generiertem JavaScript-Code. Problem: beim Klicken auf Button XYZ passiert nicht ABC, sondern DEF. Klicken bedeutet: clientseitige Interaktion, bedeutet: Event-Handler arbeitet nicht richtig, bedeutet: nicht der PHP-Code, sondern der generierte JavaScript-Code ist fehlerhaft, bedeutet: im "HTML, JavaScript, AJAX und CSS"-Forum den Code posten, den der Client bekommt. Wenn ich dagegen dort dann PHP-Code sehe, der das ganze noch komplizierter macht, bin ich genervt.

Sorry, wenn ich überreagiert habe.

Zitat:
Zitat von jaffi Beitrag anzeigen
kann es sein das in diesem Forum keine "Absolut-Anfänger erwünscht sind?
Wenn man einige Antworten so liest bekommt man echt das Gefühl vermittelt als seien solche Fragen unerwünscht...
Definiere Absolut-Anfänger. Ein paar Grundlagen (auch Forenregeln) sollte man intus haben, damit man überhaupt in der Lage ist, die Antwort zu verstehen (ist jetzt nicht auf dich bezogen, sondern allgemein). Die Idee, sich mal den generierten SQL-Code anzusehen (z. B. mit echo), sollte imho eigentlich recht naheliegend sein. Das erweckt bei mir den Eindruck (keine Unterstellung, nur ein persönlicher Eindruck), dass der Fragende keine Lust hat, selbst nach dem Fehler zu suchen.

Nichts für ungut. Ich hatte heute vielleicht auch einen etwas schlechten Start in den Tag.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #6 (permalink)  
Alt 22-01-2010, 14:06
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Du fragst hier, weil du, bzw. den Code, verbessert werden möchtest. Also sei doch nicht sofort beleidigt, wenn das auch geschieht.

Und ja, für das Erarbeiten der Grundlagen ist jeder selber zuständig. Denn hier kann man nicht mit jedem Anfänger einen individual Grundlagenkurs durchziehen.


Nur zur Information:
Zitat:
Ich hab aber mal gelernt es gibt keine doofen Fragen sondern nur doofe Antworten...;o)
Da hast du was falsches gelernt.
Das ist nur eine durchhalte Parole für Dokuleseverweigerer und DAUs.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #7 (permalink)  
Alt 22-01-2010, 19:18
jaffi
 Registrierter Benutzer
Links : Onlinestatus : jaffi ist offline
Registriert seit: Jan 2010
Beiträge: 8
jaffi befindet sich auf einem aufstrebenden Ast
Standard

*del* Amica

Geändert von AmicaNoctis (22-01-2010 um 20:33 Uhr) Grund: Flaming
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Überprüfen ob variable bereits in txt datei vorhanden ist? freakie PHP Developer Forum 7 20-01-2009 08:44
mysql_num_rows($result) = 1 aber kein Datensatz vorhanden Dominik.Pue. SQL / Datenbanken 30 23-01-2008 09:03
daten bereits vorhanden mit elseif anweisung? lukeacid PHP Developer Forum 12 30-12-2004 00:58
SQL-Abfrage ergibt leere seite, obwohl fast 100 elemente vorhanden sein müssten. chakra SQL / Datenbanken 4 26-08-2004 19:09
User vorhanden??? Zocker PHP Developer Forum 1 10-02-2003 22:59

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:11 Uhr.