29.07.2013, 10:01
29.07.2013, 10:03
Der Fehler kommt daher, da ich nicht weiß ob du ein ID mit AI und PK nutzt.
Ich mache als erstes immer ein ID Feld welches AI und PK hat - auch wenn ich es nicht brauche, so bin ich auf der sicheren Seite.
`id` kannst du aber auch durch ein vorhandenes Feld in der MySQL Datenbank ersetzen - ich kenne deine Struktur nicht.
Hab meinen Post eben noch mal korrigiert und deinen Code neu verfasst:
Ich mache als erstes immer ein ID Feld welches AI und PK hat - auch wenn ich es nicht brauche, so bin ich auf der sicheren Seite.
`id` kannst du aber auch durch ein vorhandenes Feld in der MySQL Datenbank ersetzen - ich kenne deine Struktur nicht.
Hab meinen Post eben noch mal korrigiert und deinen Code neu verfasst:
PHP-Code:
<?php
//Datenbank Verbindung herstelle
@mysql_connect(Server, Benutzer, PW);
@mysql_select_db(keys);
//POST filtern
$serial = mysql_real_escape_string($_POST["key"]);
//Abfrage aufbauen
$sql = mysql_query("SELECT `id` FROM `testprodukt` WHERE BINARY `serial` = '$serial'") OR die(mysql_error());
//Abfragen ob Key vorhanden
if(!mysql_num_rows($sql)) {
echo 'Key ungültig';
//Wenn vorhanden
} else {
//Abfragen ob bereits genutzt
$used = mysql_query("SELECT `id` FROM `testprodukt` WHERE BINARY `serial` = '$serial' AND `used` = '1'");
if(mysql_num_rows($used)) {
echo 'Wurde bereits benutzt';
//Wenn nicht
} else {
//Daten Updaten und Meldung aufgeben
if(mysql_query("UPDATE `testprodukt` SET `used` = '1', `date_activated` = NOW() WHERE BINARY `serial` = '$serial'")) {
echo 'vielen Dank!';
//Wenn Fehler bei Update
} else {
echo 'Der Code konnte leider nicht aktiviert werden';
}
}
}
29.07.2013, 10:09
@Storage-Base: ID, AI und PK sagt mir gar nichts... Bin neu im Gebiet PHP und SQL.
Um es vielleicht zu vereinfachen habe ich hier mal die Datenbank "keys":
Um es vielleicht zu vereinfachen habe ich hier mal die Datenbank "keys":
PHP-Code:
CREATE TABLE IF NOT EXISTS `testprodukt` (
`serial` varchar(40) DEFAULT NULL,
`product` varchar(20) DEFAULT NULL,
`datum` date DEFAULT NULL,
`used` tinyint(4) DEFAULT NULL,
`date_activated` date DEFAULT NULL,
UNIQUE KEY `serial_2` (`serial`),
KEY `serial` (`serial`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
29.07.2013, 10:13
Ach, notfalls - einfach anstelel von `id` ein * setzen.
Also:
Also:
PHP-Code:
<?php
//Datenbank Verbindung herstelle
@mysql_connect(Server, Benutzer, PW);
@mysql_select_db(keys);
//POST filtern
$serial = mysql_real_escape_string($_POST["key"]);
//Abfrage aufbauen
$sql = mysql_query("SELECT * FROM `testprodukt` WHERE BINARY `serial` = '$serial'") OR die(mysql_error());
//Abfragen ob Key vorhanden
if(!mysql_num_rows($sql)) {
echo 'Key ungültig';
//Wenn vorhanden
} else {
//Abfragen ob bereits genutzt
$used = mysql_query("SELECT * FROM `testprodukt` WHERE BINARY `serial` = '$serial' AND `used` = '1'");
if(mysql_num_rows($used)) {
echo 'Wurde bereits benutzt';
//Wenn nicht
} else {
//Daten Updaten und Meldung aufgeben
if(mysql_query("UPDATE `testprodukt` SET `used` = '1', `date_activated` = NOW() WHERE BINARY `serial` = '$serial'")) {
echo 'vielen Dank!';
//Wenn Fehler bei Update
} else {
echo 'Der Code konnte leider nicht aktiviert werden';
}
}
}
AI steht für Auto Increment - automatisches hoch zählen.
PK steht für Primary Key.
Durch die Kombination von AI und PK hast du ein Feld welches einmalig ist (PK) und sich von alleine, bei jeder neuen Zeile hoch zählt (AI) ohne dein zu tun. Bei einem Insert wird dann einfach auf das ID Feld Value "NULL" angewandt.
So hast du immer ein Feld auf welches du dich beziehen kannst, dessen Format du kennst und du sonst nichts weiter brauchst. Wenn du dein Script dann immer nach ID baust, was dann Update und Delete angeht - bist du eigentlich immer auf der sicheren Seite das die Aktion auch ausgeführt wird.
29.07.2013, 10:15
Danke @Storage-Base.de!
Du hast mir soeben den Tag gerettet
Du hast mir soeben den Tag gerettet

Seiten: 1 2