Pregunta

mi mysqli_fetch_array(mysqi_query($db, $query)) no parece obtener la información correcta de la base de datos y, por lo tanto, la aplicación PHP no funciona como debería.

Aquí están las consultas,

<?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']."'"));
} 
?>

Al mismo tiempo, el if ($current['userid'] == "1") {echo(" selected ");} no genera nada en absoluto, por lo que la opción correcta no está seleccionada en la etiqueta SELECT.

Entonces, dónde:Yo esperaría:echo($currentperms['nueva aplicación']);no debe ser igual a 1, porque así está configurado en la base de datos, cuyo resultado es "1".Probé esto haciendo eco de la cuerda obtenida.Newapp tampoco es una columna de la tabla, por lo que no debería devolver "1" como resultado.

Con este:

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

No se repite nada, sin embargo, la variable se usó anteriormente en el script y su resultado es "1".

Por favor ayúdenme, estoy yendo por las nubes :|

@sasa:producción:¡Éxito!Array ( [0] => 1 [ID de usuario] => 1 [1] => shamil.nunhuck [nombre de usuario] => shamil.nunhuck [2] => Shamil Nunhuck [nombre completo de usuario] => Shamil Nunhuck [3] = > shamil.nunhuck@localhost [useremail] => shamil.nunhuck@localhost [4] => 6363d731bd7492fe4c33fc3d90fd61bc [contraseña de usuario] => 6363d731bd7492fe4c33fc3d90fd61bc [5] => 1 [nivel de usuario] => 1 [6] => Administrador [título de usuario] = > Administrador [7] => 1 [tos] => 1 ) Array ( [0] => 1 [userid] => 1 [1] => 0 [ptodo] => 0 [2] => 0 [usercp] => 0 [3] => 0 [pm] => 0 [4] => 0 [error] => 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 [usuariolista] => 0 [12] => 0 [nuevaaplicación] => 0)

¿Fue útil?

Solución

Pruebe este código:

//  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";
}

O tal vez solo un error de sintaxis:

Con este:

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

Debería ser:

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

Otros consejos

Si el problema es que la base de datos devuelve información incorrecta, probablemente sea mejor que publiques la parte mysql del código (especialmente.la consulta), los resultados actuales y los resultados que esperaba ver.

También para su información, espero que analice sus variables $_GET y $_POST antes de volcarlas en esa consulta.Pasarlos directamente al SQL de esa manera no es una buena idea.

No estoy 100% seguro de seguir la pregunta, pero parece que estás diciendo que el resultado de $current['userid'] == "1" es falso, a pesar de $current['userid'] imprimiendo como "1", ¿correcto?

Si ese es el caso, es posible que haya algún espacio en blanco u otra basura en el valor, lo que hace que la comparación falle, aunque dudo que ese sea el caso si userid es generado automáticamente por la base de datos.

Puede verificar esto inspeccionando más a fondo el valor, p.

var_dump( $current['userid'] ); // Check for whitespace
echo strlen( $current['userid'] ); // Is this greater than 1?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top