XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   Mysql Abfrage geht nicht (http://xhtmlforum.de/showthread.php?t=62362)

rs-web 12.09.2010 21:54

Mysql Abfrage geht nicht
 
Hi,
folgendes Script und die erste Query wird ausgeführt aber die 2te nicht. Habe versucht den Fehler zu suchen aber keine Chance. Mysql sagt immer iwas in der Nähe der ID='$id' falsch ist, aber da das ja zwei Mal das gleiche ist, hilft mir das nix:

PHP-Code:

$sql "UPDATE nicht_aktivierte_benutzer SET aktivierungsCode = 'aktiviert' WHERE ID='$id'";
$GLOBALS['DB']->query($sql);
$sql "SELECT ID, benutzername, passwort, email, registrierungsDatum FROM nicht_aktivierte_benutzer WEHRE ID='$id'";
$daten $GLOBALS['DB']->query($sql); 

Also wenn ich das Aufrufe, steht in der Spalte aktivierungsCode "aktiviert.

LG rs-web

stravid 12.09.2010 23:22

In
Code:

$sql = "SELECT ID, benutzername, passwort, email, registrierungsDatum FROM nicht_aktivierte_benutzer WEHRE ID='$id'";
ist ein Schreibfehler, es sollte wohl WHERE und nicht WEHRE heißen.
Code:

$sql = "SELECT ID, benutzername, passwort, email, registrierungsDatum FROM nicht_aktivierte_benutzer WHERE ID='$id'";

Praktikant 12.09.2010 23:55

Es ist zwar von der Syntax her korrekt so, aber ich würde es wegen der besseren Leserlichkeit eher folgendermaßen machen:
PHP-Code:

$sql "UPDATE nicht_aktivierte_benutzer SET aktivierungsCode = 'aktiviert' WHERE ID='" $id "'";
$GLOBALS['DB']->query($sql);
$sql "SELECT ID, benutzername, passwort, email, registrierungsDatum FROM nicht_aktivierte_benutzer WHERE ID='" $id "'";
$daten $GLOBALS['DB']->query($sql); 


stravid 13.09.2010 02:28

Zitat:

Zitat von Praktikant (Beitrag 474408)
Es ist zwar von der Syntax her korrekt so, aber ich würde es wegen der besseren Leserlichkeit eher folgendermaßen machen:
PHP-Code:

$sql "UPDATE nicht_aktivierte_benutzer SET aktivierungsCode = 'aktiviert' WHERE ID='" $id "'";
$GLOBALS['DB']->query($sql);
$sql "SELECT ID, benutzername, passwort, email, registrierungsDatum FROM nicht_aktivierte_benutzer WEHRE ID='" $id "'";
$daten $GLOBALS['DB']->query($sql); 


Du hast den gleichen Schreibfehler in deinem Code wie rs-web!

Praktikant 13.09.2010 08:10

Zitat:

Zitat von HEXMACHINE (Beitrag 474418)
Du hast den gleichen Schreibfehler in deinem Code wie rs-web!

Sorry. Habs im Halbschlaft kopiert und vergessen den Fehler zu verbessern, werde es kurz nachholen.

rs-web 13.09.2010 08:31

Ok,

danke euch beiden. Auf den Schreibfehler mit dem WHERE wäre ich nie gekommen. Und das mit den Variablen ist auch gut zu wissen.

PS Guten Morgen :D

rs-web 13.09.2010 09:00

Bin gerade auf das nächste Problem gestoßen:
Ich möchte eine ID immer sechstellig haben: 000045, 000046.
PHP-Code:

$sql "SELECT ID FROM nicht_aktivierte_benutzer WHERE aktivierungsCode = '".$zufallsString."'";
$ID $GLOBALS['DB']->query($sql);//Sql Befehl wir ausgeführt
$ID $ID[0]["ID"];
$neueId str_pad($ID6"0"STR_PAD_LEFT);
$sql "UPDATE nicht_aktivierte_benutzer SET ID = '".$neueId."' WHERE aktivierungsCode = '".$zufallsString."'";
$GLOBALS['DB']->query($sql);
echo 
$GLOBALS['DB']->lastSqlError(); 

Es gibt keine Fehlermeldung, aber die ID belbt nach wie vor 2 stellig. Achja die ID wird mit Auto_increment erstellt. Wenn iich mir den String testweise vor der Abfrage ausgeben lasse ist er sechstellig. Die Spalte ist von Type int(6).

LG rs-web

Praktikant 13.09.2010 09:15

Führende Nullen in Zahlenfeldern werden bei MySQL gelöscht. Ich glaube das ist bei allen Datenbankentypen so. Habe auch noch keinen Weg gefunden das zu umgehen, außer ein Textfeld draus zu machen was aber nicht Sinn der Sache ist.

rs-web 13.09.2010 09:25

Danke für deine Antwort.
Gilt das auch für Abfragen?
Also wenn ich ein Feld hab in das dann 000045 eingetragen wird und in der DB 45 steht, kommt dann true raus?

LG rs-web

uspri 13.09.2010 09:46

Den Wert kannst Du doch für die Ausgabe "hübschen", aber intern ohne die führenden Nullen arbeiten.

rs-web 13.09.2010 09:55

Hab jetzt schnell ein Formular geschrieben. Ob man 045 oder 45 eingibt, es geht beides. Das ist mir neu.

Danke euch allen.
LG rs-web

Praktikant 13.09.2010 10:10

Zitat:

Zitat von rs-web (Beitrag 474429)
Hab jetzt schnell ein Formular geschrieben. Ob man 045 oder 45 eingibt, es geht beides. Das ist mir neu.

Danke euch allen.
LG rs-web

Wie gesagt: führende Nullen werden ignoriert, verschwendet ja sowieso nur Speicherplatz und es hat keinen Effekt, außer dass es vielleicht gut aussieht.

Wie uspri schon sagte. Du kannst ja über PHP die Ausgabe hübschen, dann sieht es wenigstens bei der Ausgabe so aus, als würden alle Zahlen immer sechstellig sein. Bei der Abfrage werden die führenden Nullen dann wieder ignoriert.

protonenbeschleuniger 13.09.2010 10:59

Du suchst ZEROFILL


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

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023