Sponsor-Board.de

Normale Version: [MySQL] PHP gibt nur "Array" aus
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
@Storage-Base: Jetzt kommt der Fehler:

PHP-Code:
Unknown column 'id' in 'field list' 

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:

PHP-Code:
<?php
//Datenbank Verbindung herstelle
@mysql_connect(ServerBenutzerPW);
@
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';

        }

    }


@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":

PHP-Code:
CREATE TABLE IF NOT EXISTS `testprodukt` (
  `
serialvarchar(40) DEFAULT NULL,
  `
productvarchar(20) DEFAULT NULL,
  `
datumdate DEFAULT NULL,
  `
usedtinyint(4) DEFAULT NULL,
  `
date_activateddate DEFAULT NULL,
  
UNIQUE KEY `serial_2` (`serial`),
  
KEY `serial` (`serial`)
ENGINE=InnoDB DEFAULT CHARSET=utf8

Ach, notfalls - einfach anstelel von `id` ein * setzen.

Also:

PHP-Code:
<?php
//Datenbank Verbindung herstelle
@mysql_connect(ServerBenutzerPW);
@
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.

Danke @Storage-Base.de!

Du hast mir soeben den Tag gerettet Smile
Seiten: 1 2
Referenz-URLs