[MySQL] PHP gibt nur "Array" aus
|
Verfasser |
Nachricht |
|
Beiträge: 124
Bewertung: 1
Registriert seit: Dec 2011
Status:
offline
|
[MySQL] PHP gibt nur "Array" aus
Hallo liebes SB!
Ich versuche gerade mit PHP auf meine Datenbank, wo verschiedener Keys gespeichert sind, zuzugreifen und auf gültigkeit zu überprüfen.
<?php @mysql_connect(Server, Benutzer, Passwort); @mysql_select_db(keys); $serial = $_POST['Key']; $sql = "SELECT COUNT(*) FROM testprodukt WHERE serial = '{$serial}'"; $result = mysql_query($sql); echo mysql_error(); $test = mysql_fetch_row($result); if (mysql_fetch_row($result) == 0) { echo"Dieser Key ist ungültig!SQL: $sql | $result | $test | $serial"; echo mysql_error(); } else { $used = "SELECT used FROM testprodukt WHERE serial = '{$serial}'"; $ergebnis = mysql_query($used); if (mysql_fetch_row($ergebnis) == 1) {
echo 'Dieser key wurde bereits benutzt!'; } else { echo"Danke, dass du 'TestProdukt' gekauft, und aktiviert hast! SQL: $sql | $result | $serial"; echo mysql_error(); mysql_query("UPDATE testprodukt SET used = 1 WHERE serial = '{$serial}'"); mysql_query("UPDATE testprodukt SET date_activated = NOW() WHERE serial = '{$serial}'"); } }
Die Keyeingabe erfolgt über eine einfache HTML Seite.
Nun habe ich aber das Problem, dass MySQL als Antwort auf die Frage "schon vorhanden?", "Array" ausgibt.
Eigentlich sollte es 1 für "Schon vorhanden" oder 0 für "Nicht vorhanden" antworten...
Ich hoffe ihr könnt mir helfen...
PS: Für denjenigen, der mir dieses Problem löst, warten 300 SB-Punkte.
Danke für eure Antworten!
L.G.
MMS3 Admin
Steam & Skype: TerraBAS ッ
___________________________________________________
[Link: Registrierung erforderlich]
Dieser Beitrag wurde zuletzt bearbeitet: 29.07.2013 08:25 von MMS3 Admin.
|
|
29.07.2013 08:23 |
|
|
Beiträge: 3.413
Bewertung: 33
Registriert seit: Oct 2010
Status:
offline
|
|
29.07.2013 08:27 |
|
|
Beiträge: 124
Bewertung: 1
Registriert seit: Dec 2011
Status:
offline
|
RE: [MySQL] PHP gibt nur "Array" aus.
anstatt "mysql_fetch_row" nimm mal "mysql_num_rows"
Schon probiert...
Leider antwortet MySQL dann mit "Resource id #3"
L.G.
MMS3 Admin
Steam & Skype: TerraBAS ッ
___________________________________________________
[Link: Registrierung erforderlich]
|
|
29.07.2013 08:29 |
|
|
Beiträge: 3.413
Bewertung: 33
Registriert seit: Oct 2010
Status:
offline
|
RE: [MySQL] PHP gibt nur "Array" aus
<?php
mysql_connect(Server, Benutzer, Passwort);
mysql_select_db(keys);
$serial = mysql_real_escape_string($_POST['Key']);
$sql = "SELECT * FROM testprodukt WHERE serial = '".$serial."'";
$result = mysql_query($sql);
echo mysql_error();
$test = mysql_fetch_row($result);
if(mysql_num_rows($result) <= 1)
{
echo"Dieser Key ist ungültig!SQL: $sql | $result | $test | $serial";
echo mysql_error();
}
else
{
$used = "SELECT used FROM testprodukt WHERE serial = '".$serial."'";
$ergebnis = mysql_query($used);
if (mysql_num_rows($ergebnis) >= 1)
{
echo 'Dieser key wurde bereits benutzt!';
}
else
{
echo"Danke, dass du 'TestProdukt' gekauft, und aktiviert hast! SQL: $sql | $result | $serial";
echo mysql_error();
mysql_query("UPDATE testprodukt SET used = 1 WHERE serial = '".$serial}."'");
mysql_query("UPDATE testprodukt SET date_activated = NOW() WHERE serial = '".$serial}."'");
}
}
Portfolio: [Link: Registrierung erforderlich]
Projekte
[Link: Registrierung erforderlich]
[Link: Registrierung erforderlich]
|
|
29.07.2013 08:48 |
|
|
Beiträge: 1.545
Bewertung: 62
Registriert seit: Jan 2011
Status:
offline
|
RE: [MySQL] PHP gibt nur "Array" aus
Hallo MMS3 Admin,
ich hoffe, dass dir bewusste ist dass folgender Teilabschnitt nicht funktionieren kann.
if (mysql_fetch_row($ergebnis) == 1) {
echo 'Dieser key wurde bereits benutzt!'; }
Du kannst eine Arrayabfrage (mysql_fetch_row) nicht mit einem "==" (und numerischer Wert) Operand abfragen - das Statement
if (count(mysql_fetch_row($ergebnis)) == 1) {
echo 'Dieser key wurde bereits benutzt!'; }
könnte an dieser Selle funktionieren - oder
if (mysql_num_rows($ergebnis) == 1) {
echo 'Dieser key wurde bereits benutzt!'; }
kann hier funktionieren. ([Link: Registrierung erforderlich] --> Rückgabewert)
---------------------------
[Link: Registrierung erforderlich] | [Link: Registrierung erforderlich]
Dieser Beitrag wurde zuletzt bearbeitet: 29.07.2013 08:53 von DebianDEV.
|
|
29.07.2013 08:50 |
|
|
Beiträge: 2.492
Bewertung: 29
Registriert seit: Jul 2010
Status:
offline
|
|
29.07.2013 08:52 |
|
|
Beiträge: 124
Bewertung: 1
Registriert seit: Dec 2011
Status:
offline
|
RE: [MySQL] PHP gibt nur "Array" aus
@Aron: Serverfehler... Kann das Script so leider nicht testen.
@Ultimate-Servers: Gleicher Fehler... "Resource id #3"
@Storage-Base.de: Glaube das MySQL nur 1,0 als True, False annimmt.
L.G.
MMS3 Admin
Steam & Skype: TerraBAS ッ
___________________________________________________
[Link: Registrierung erforderlich]
|
|
29.07.2013 08:57 |
|
|
Beiträge: 3.413
Bewertung: 33
Registriert seit: Oct 2010
Status:
offline
|
|
29.07.2013 09:00 |
|
|
Beiträge: 124
Bewertung: 1
Registriert seit: Dec 2011
Status:
offline
|
RE: [MySQL] PHP gibt nur "Array" aus
<?php @mysql_connect(Server, Benutzer, PW); @mysql_select_db(keys); $serial = $_POST['Key']; $sql = "SELECT COUNT(*) FROM testprodukt WHERE serial = '{$serial}'"; $result = mysql_query($sql); echo mysql_error(); $test = mysql_fetch_row($result); //Dient als Fehlerausgabe if (mysql_num_rows($result) == 0) { echo"Dieser Key ist ungültig!SQL: $sql | $result | $test | $serial"; echo mysql_error(); } else { $used = "SELECT used FROM testprodukt WHERE serial = '{$serial}'"; $ergebnis = mysql_query($used); if (mysql_num_rows($ergebnis) == 1) {
echo 'Dieser key wurde bereits benutzt!'; } else { echo"Danke, dass du 'TestProdukt' gekauft, und aktiviert hast! SQL: $sql | $result | $serial"; echo mysql_error(); mysql_query("UPDATE testprodukt SET used = 1 WHERE serial = '{$serial}'"); mysql_query("UPDATE testprodukt SET date_activated = NOW() WHERE serial = '{$serial}'"); } }
Komisch ist außerdem:
Gebe ich nun einen validen key ein, so meldet er, er sei schon benutzt. Gebe ich einen Ungültigen ein, meldet er:
Danke, dass du 'TestProdukt' gekauft, und aktiviert hast! SQL: SELECT COUNT(*) FROM testprodukt WHERE serial = 'GZ30-WVG-FIES-35WQ' | Resource id #3 | GZ30-WVG-FIES-35WQ
L.G.
MMS3 Admin
Steam & Skype: TerraBAS ッ
___________________________________________________
[Link: Registrierung erforderlich]
Dieser Beitrag wurde zuletzt bearbeitet: 29.07.2013 09:09 von MMS3 Admin.
|
|
29.07.2013 09:02 |
|
|
Beiträge: 2.492
Bewertung: 29
Registriert seit: Jul 2010
Status:
offline
|
RE: [MySQL] PHP gibt nur "Array" aus
<?php @mysql_connect(Server, Benutzer, PW); @mysql_select_db(keys);
$serial = $_POST['Key']; $sql = "SELECT `id` FROM `testprodukt` WHERE BINARY `serial` = '$serial'"; $result = mysql_query($sql) OR die(mysql_error());
if (!mysql_num_rows($result)) { echo"Dieser Key ist ungültig!SQL: $sql | $result | $test | $serial"; echo mysql_error(); } else { $used = "SELECT `id` FROM `testprodukt` WHERE BINARY `serial` = '$serial' AND `used` = 1"; $ergebnis = mysql_query($used); if (mysql_num_rows($ergebnis)) {
echo 'Dieser key wurde bereits benutzt!'; } else { echo"Danke, dass du 'TestProdukt' gekauft, und aktiviert hast! SQL: $sql | $result | $serial"; echo mysql_error(); mysql_query("UPDATE testprodukt SET used = 1 WHERE serial = '{$serial}'"); mysql_query("UPDATE testprodukt SET date_activated = NOW() WHERE serial = '{$serial}'"); } }
So würde ich es mal versuchen.
Dein Problem:
$sql = "SELECT COUNT(*) FROM testprodukt WHERE serial = '{$serial}'";
Du zählst es dann machst du:
if (mysql_num_rows($result) == 0)
Du willst damit die Datensätze zählen, was vermutlich aber nicht klappt da ja bereits gezählt wurde.
Auch solltest du für den Code BINARY nutzen, die Angabe sorgt nämlich dafür dass der Code Case Sensitive ist.
Ich habe auch solche Dinge wie "== 1" durch einfach "if(mysql_query())" bzw "if(!mysql_query())" ersetzt.
//EDIT:
Habs mal selbst geschrieben - das wäre meine Vorstellung von dem 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';
}
}
}
Mit freundlichen Grüßen / Best Regards
Julian Weiler | Geschäftsführender Gesellschafter
[Link: Registrierung erforderlich] ist außerdem bei [Link: Registrierung erforderlich], [Link: Registrierung erforderlich] und [Link: Registrierung erforderlich]
Telefon: +49 (0) 67 74 / 20 49 520
Fax: +49 (0) 67 74 / 20 49 520 9
E-Mail: [Mail: Registrierung erforderlich]
Dieser Beitrag wurde zuletzt bearbeitet: 29.07.2013 10:01 von Storage-Base.de.
|
|
29.07.2013 09:54 |
|
|