SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 18.07.2004, 18:43:32
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
Typische Fehlerquellen im SQL - bitte VOR dem Posten lesen!

Da ich in diesem Forum immer wieder ein paar typische Fehler beobachtet habe, hier mal einige Fehlerquellen, die bitte in Zukunft vor einem neuen Posting zu beachten und außzuschließen sind:

1. Bitte Werte/Variablen mit Hochkommata umschließen, so lange der spalten-typ kein int ist, also

"SELECT feld FROM tabelle WHERE id = $id AND name = 'Kurt'" //$id ist dem fall z.b. 52342365

Ist ein Wert ein Array-Element, kommen innerhalb der Hochkommata (hochkommata nur wenn spalten-typ nicht int) um das Elemtent geschwungene Klammern:

"SELECT feld FROM tabelle WHERE id = {$userdata[ 'id' ]}"

Wird eine Variable/Methode aus einer KLasse benutzt, so hat das wie folgt auszusehen:

"SELECT " . $db->feldname . " FROM tabelle WHERE id = " . $user->getId();

2. Es gibt reservierte Wörter, wie z.b. DATE. Das sind Funktionen in sql. Diese Namen dürfen zwar als Spaltennamen verwendet werden, sollten jedoch - um die Verwechslung auszuschließen - von Backticks umgeben sein. Dieses Zeichen findet ihr in der Regel neben der Backspace-Taste bei gedrückter Shift-Taste; danach muss noch Space gedrückt werden:

`

z.b.:

"SELECT `timestamp` FROM tabelle"

Sollten Tabellen verknüpft werden, hat das so auszusehen:

"SELECT `time`.`timestamp` , `datetime`.`time` FROM `time` , `datetime`"

Eine Übersicht über alle reservierten Wörter:

http://dev.mysql.com/doc/refman/4.1/...ved-words.html

3. Ich habe auch gesehen, dass einige "Neulinge", wenn der Wert genau einer Zelle ausgelesen wird, erwarten, dass der Inhalt der Zelle direkt der Rückgabewert der sql-Abfrage ist. Dem ist nicht so.

PHP-Code:
$sql "SELECT feldname FROM tabelle WHERE id = 3";
$qry mysql_query$sql ); 
nun gibt

echo $qry;

nicht den Inhalt der Zelle feldname in der Zeile wo id = 3 ist aus.

es muss auch hier so aussehen:
PHP-Code:
$sql "SELECT feldname FROM tabelle WHERE id = 3";
$qry mysql_query$sql );

$result mysql_fetch_array$qry );
echo 
$result'feldname' ]; 
4. arrays lassen sich nicht so ohne weiteres in zellen speichern.
man muss sie vorher mit serialize() in einen string umwandeln. nach dem auslesen wieder mit unserialize() in ein array verwandeln. dies gilt übrigens auch für das speichern von arrays in cookies.

5. ich zitiere mal c4:

Zitat:
Mit Version 4.1 wurde in PHP ein neues Sicherheitskonzept eingeführt, welches seit Version 4.2 standardmäßig aktiviert ist. Seit dem muss man alle übergebenen Variablen mit
$_GET['variable'] - für Urlparameter
$_POST['variable'] - für mit method=post versendete Parameter
$_COOKIE['variable'] - für Cookies
$_REQUEST['variable'] - $_POST, $_GET und $_COOKIE zusammen
$_FILES['variable'] - für hochgeladene Dateien
$_SERVER['variable'] - für Servervariablen (z.B. $_SERVER['PHP_SELF'])
$_ENV['variable'] - für Umgebungsvariablen
ansprechen. Also ehemals $str mit $_GET['str']
Oder Du setzt in der php.ini register_globals auf on. Davon rate ich aber ab.
6. Bitte überprüft eure SQL-Statements auch _immer_ auf Tippfehler!

7. Wenn ihr etwas postet, was fehlerhaft ist, dann auch bitte den dazugehörigen MySQL-Error; den bekommt ihr wie folgt heraus:

PHP-Code:
$sql "SELECT bla FROM blubb WHERE blipp";
$qry mysql_query$sql ) or die( mysql_error() ); 
Falls nun die SQL-Abfrage fehlerhaft sein sollte, wird euch die zugehörige errormessage ganz von alleine ausgegeben.

8. Falls ihr obenstehendes beachtet habt, gebt euch euer SQL-Statement via echo aus und schaut, ob alles so aussieht, wie ihr es euch vorgestellt habt.

========================================
Ich kleb das mal als sticky fest, wenn jemandem noch was einfällt, bitte hier hin posten.

Geändert von feuervogel (03.09.2006 um 21:12:06 Uhr)
Mit Zitat antworten
  #2  
Alt 20.07.2004, 15:04:29
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Zitat:
1. Bitte alle Werte/Variablen mit Hochkommata umschließen, also

"SELECT feld FROM tabelle WHERE id = '$id' AND name = 'Kurt'"
Seit wann quoted man Zahlen...
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #3  
Alt 29.09.2004, 23:43:07
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
Zitat:
Original geschrieben von _c_4_
Seit wann quoted man Zahlen...
Seitdem MySQL ein automatisches typecasting beherrscht.
Mit Zitat antworten
  #4  
Alt 30.09.2004, 08:54:34
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Wie widerlich.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #5  
Alt 27.01.2006, 17:26:12
Gamerfun Gamerfun ist offline
Anfänger
 
Registriert seit: Dec 2005
Ort: Izmir
Alter: 35
Beiträge: 30
AW: Typische Fehlerquellen im SQL - bitte VOR dem Posten lesen!

PHP-Code:
$sql "SELECT feldname FROM tabelle WHERE id = 3";
$qry mysql_query$sql );

$result mysql_fetch_array$qry );
echo 
$result'feldname' ]; 
Müsste es nicht so sein:

PHP-Code:
$sql "SELECT feldname FROM tabelle WHERE id = 3";
$qry mysql_db_query$datenbank,$sql );

$result mysql_fetch_array$qry );
echo 
$result'feldname' ]; 
Bitte korigiert mich falls es falsch ist, ich weiss es so :D
__________________
Mitleid bekommt man umsonst, Neid muss man sich verdienen.
Mit Zitat antworten
  #6  
Alt 27.01.2006, 17:49:59
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: Typische Fehlerquellen im SQL - bitte VOR dem Posten lesen!

wieso sollte deins falsch sein wenn es so funktioniert? warum sollte meins falsch sein, nur weil es auch nen anderen weg gibt das gleiche zu erledigen?

beides ist richtig, denke ich.
Mit Zitat antworten
  #7  
Alt 27.01.2006, 18:12:18
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
AW: Typische Fehlerquellen im SQL - bitte VOR dem Posten lesen!

Zitat:
Zitat von Gamerfun
Müsste es nicht so sein:
Nein.
Zitat:
Zitat von Gamerfun
$qry = mysql_db_query( $datenbank,$sql );
Zitat:
Zitat von Handbuch
Anmerkung: Diese Funktion ist seit PHP 4.0.6 veraltet. Verwenden Sie diese Funktion nicht. Stattdessen sollten Sie die Funktionen mysql_select_db() und mysql_query() verwenden.
Mit Zitat antworten
  #8  
Alt 27.01.2006, 18:18:19
Gamerfun Gamerfun ist offline
Anfänger
 
Registriert seit: Dec 2005
Ort: Izmir
Alter: 35
Beiträge: 30
AW: Typische Fehlerquellen im SQL - bitte VOR dem Posten lesen!

Achso, also benutze ich ne alte Version, schnell umsteigen :D
__________________
Mitleid bekommt man umsonst, Neid muss man sich verdienen.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:31:30 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt