Was stimmt in diesem Code nicht? If Else Abfragen in PHP falsch?

... komplette Frage anzeigen

5 Antworten

Ich persönlich würde dir raten statt empty() auf strlen() > 0 umzusteigen bei deinen if-Statements. Es kann manchmal verflucht gemein sein, wenn man im Bereich von Datenbankabfragen mit Leerstrings, null-Werten oder null-Results hantiert. strlen() > 0 hingegen liefert dir wirklich erst dann true zurück, wenn auch tatsächlich etwas in der Variable drin steht. Damit ist man dann immer schön auf der sicheren Seite - ist zumindest meine Meinung.


Antwort bewerten Vielen Dank für Deine Bewertung
$bannedstatusrow = mysql_fetch_array($getbannedstatus);

$finalbannedstatus = $bannedstatusrow['Banned'];

falls kein eintrag für den user in der tabelle existiert, liefert fetch ein null-wert zurück und kein array. also vorher kontrollieren. sollte eigentlich einen fehler/warning produzieren,

hast du
error_reporting( E_ERROR | E_WARNING | E_PARSE);

eingeschaltet?

Antwort bewerten Vielen Dank für Deine Bewertung

ich empfehle dich auf richtige sichere datenbank anfragen umzustellen .

Das was du da hast ist wirklich nur für testzwecke brauchbar .

im allgemeinen kann man aber das vorhanden sein von rückgabe anhand der anzahl an spalten bestimmen .

schon $bannedstatusrow['Banned'] kann undefinded sein , weil ja keine leeres array zurück gegeben wird .

ich benutze pdo und da sieht das dann so aus

function getArraySQL($sqla,&$dbs) {
$someEntry = false;
if (isset($sqla["binds"])) {
$stmt = $dbs->prepare($sqla["query"]);
$stmt->execute($sqla["binds"]);
} else {
$stmt = $dbs->prepare($sqla);
$stmt->execute();
}
if ($stmt->columnCount() > 0 ) {
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$someEntry = $rows ;
}
return $someEntry;
}

wobei dann der query so abgesetzt wird , übrigens ist columnCount für alle MySQL gültig auf den verschiedenen systemen .

$dbs = new PDO($dbs['connect'], $dbs['user'] , $dbs['pass']);
$sqla = array(
"query" => "SELECT reihe where spalte = :a",
"binds" => array( ":a" => 1)
);
if ($ergebnis = getArray($sqla,$dbs)) {
// gefunden
echo $ergebnis['reihe'];
} else {
// nicht gefunden
echo "nicht gefunden ";
}

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von RakonDark
18.12.2015, 20:41

ganz vergessen du suchst ja nur eine Zeile

// get single entry from db
function getEntrySQL($sqle,&$dbs) {
$aEntry = false;
if (isset($sqle["binds"])) {
$stmt = $dbs['dbi']->prepare($sqle["query"]);
$stmt->execute($sqle["binds"]);
} else {
$stmt = $dbs['dbi']->prepare($sqle);
$stmt->execute();
}
if ($stmt->columnCount() > 0 ) {
$aEntry = $stmt->fetch(PDO::FETCH_ASSOC);
}
return $aEntry;
}
0

du könntest mit

if (isset($bannedstatusrow['Banned']) &&  $bannerstatusrow["Banned"] === "true" ) { 
// weiter
} else {
// nix weiter
}

arbeiten

Antwort bewerten Vielen Dank für Deine Bewertung

Bekomme 500 Fehler

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Neukalkentfern
18.12.2015, 19:35

Hier wirst du warscheinlich kaum eine Lösung dafür finden. Schau am besten nach Foren nach wo sich Leute damit auskennen.

1
Kommentar von maximilianus7
18.12.2015, 21:48

wenn das eine antwort auf meine nachfrage ist, solltest du dies auch dort kommentieren - so versteht man das hier nicht.

500 wie meinst du das? das gibt der gezeigte php-code nicht her. echter fehler: nur 1x - dann abbruch. warnings: in einer (endlos?) schleife - sehe ich aber hier nicht.

0