Frage

meine mysqli_fetch_array(mysqi_query($db, $query)) scheint nicht die richtigen Informationen aus der Datenbank zu bekommen, und deshalb wird die PHP-Anwendung nicht funktioniert, wie es sollte.

Hier sind die Abfragen,

<?php
if($_GET){
$current = mysqli_fetch_array(mysqli_query($db, "SELECT * from `tbl_user` WHERE `userid` = '".$_GET['userid']."'"));
$currentperms  = mysqli_fetch_array(mysqli_query($db, "SELECT * from `tbl_perms` WHERE `userid` = '".$_GET['userid']."'"));
} 
?>

Gleichzeitig wird die if ($current['userid'] == "1") {echo(" selected ");} durchaus nicht ausgibt etwas, so dass die richtige Option nicht in dem SELECT-Tag ausgewählt ist.

Also, wo: Ich würde erwarten:     echo ($ currentperms [ 'newapp']); nicht 1 zu entsprechen, becuase es das Ergebnis davon ist „1“, so in der Datenbank festgelegt ist. Ich habe dies testen, indem Sie die Zeichenfolge gewonnen Echo. Newapp ist keine Spalte in der Tabelle entweder, so sollte es nicht „1“ als Ergebnis zurückkommen.

Mit diesem:

 if $current['userid'] == "1") {
 echo(" selected ");
 }

Es wird nichts Echo wird, jedoch hat die Variable in das Skript früher verwendet worden sind, und deren Ausgang ist „1“.

Bitte helfen Sie mir, ich bin durch das Dach gehen: |

@sasa: Ausgabe: Erfolg! Array ([0] => 1 [Benutzer-ID] => 1 [1] => shamil.nunhuck [username] => shamil.nunhuck [2] => Shamil Nunhuck [userfullname] => Shamil Nunhuck [3] = > shamil.nunhuck@localhost [USEREMAIL] => shamil.nunhuck@localhost [4] => 6363d731bd7492fe4c33fc3d90fd61bc [userpassword] => 6363d731bd7492fe4c33fc3d90fd61bc [5] => 1 [Benutzerpegel] => 1 [6] => Administrator [Benutzertitel] = > Administrator [7] => 1 [tos] => 1) Array ([0] => 1 [userid] => 1 [1] => 0 [ptodo] => 0 [2] => 0 [UserCP] => 0 [3] => 0 [pm] => 0 [4] => 0 [bug] => 0 [5] => 0 [ABUG] => 0 [6] => 0 [AdminCP] => 0 [7] => 0 [intmgs] => 0 [8] => 0 [adduser] => 0 [9] => 0 [pass] => 0 [10] => 0 [UserEdit] => 0 [ 11] => 0 [LISTUSER] => 0 [12] => 0 [newapp] => 0)

War es hilfreich?

Lösung

Versuchen Sie diesen Code ein:

//  I put some echo for testing
if(!empty($_GET['id'])) {
    $id = (int)$_GET['id'];
    $sql = mysqli_query($db, "SELECT * from tbl_user WHERE userid = $id LIMIT 1");
    if(mysqli_affected_rows($db) == 0) {
        echo "There is no user with that id";
    } else {
        $current = mysql_fetch_assoc($sql);
        $currentperms  = mysql_fetch_assoc(mysqli_query($db, "SELECT * from tbl_perms WHERE userid = $id"));
        echo "Success!";
        // Or try to print result
        print_r($current);
        print_r($currentperms);
    }
} else {
    echo "There is no user id";
}

oder vielleicht auch nur ein Syntaxfehler:

  

Mit diesem:

 if $current['userid'] == "1") {
 echo(" selected ");
 }

Es sollte sein:

if($current['userid'] == 1) {
    echo(" selected ");
}

Andere Tipps

Wenn das Problem ist, dass die Datenbank falsche Informationen zurückgibt, es ist wahrscheinlich am besten einfach den mysql Teil des Codes schreiben (insb. Die Abfrage), die aktuellen Ergebnisse und welche Ergebnisse Sie erwarten zu sehen.

FYI auch, ich hoffe, Sie Ihren $ _GET Parsen und $ _POST Vars, bevor sie in diese Abfrage zu Dumping. sie direkt in die SQL wie das Passing ist keine gute Idee.

Ich bin nicht 100% sicher, dass ich die Frage folgen, aber Sie scheinen zu sagen, dass das Ergebnis der $current['userid'] == "1" falsch ist, trotz $current['userid'] Ausdrucke als „1“, nicht wahr?

Wenn das der Fall ist, dann ist es möglich, es gibt einige Leerzeichen oder anderer Müll in den Wert bekommen, die der Vergleich fehlschlagen verursacht, obwohl ich bezweifle, das ist der Fall, wenn userid von der Datenbank automatisch generiert wird.

Sie können dies überprüfen, indem gründlicher den Wert Inspektion, z.

var_dump( $current['userid'] ); // Check for whitespace
echo strlen( $current['userid'] ); // Is this greater than 1?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top