mysqli dizi ->

3 Cevap php

benim mysqli_fetch_array(mysqi_query($db, $query)) veritabanından doğru bilgi almak için görünmüyor ve bu nedenle, PHP uygulama olması gerektiği gibi çalışmıyor.

İşte sorgular,

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

Aynı zamanda, if ($current['userid'] == "1") {echo(" selected ");} hiçbir şey çıkışı olmayan, yani doğru seçenek SELECT etiketi seçili değil.

So, where: I'd expect: echo($currentperms['newapp']); not to equal 1, becuase it is set so in the database, the result of which is "1". I have test this by echoing the string gained. Newapp is not a column in the table either, so it shouldn't be returning "1" as a result.

Bu grubu:

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

Hiçbir şey, ancak değişken önceki komut kullanılır olmuştur yankılandı ediliyor, ve çıkışı "1" dir.

Lütfen bana yardımcı olun, ben tavana gidiyorum: |

@sasa: output: Success!Array ( [0] => 1 [userid] => 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 [userlevel] => 1 [6] => Administrator [usertitle] => 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 )

3 Cevap

Bu kodu deneyin:

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

YA belki sadece bir sözdizimi hatası:

Bu grubu:

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

Bu olmalıdır:

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

Sorun veritabanı, bu sadece (sorgu esp.) kod mysql kısmını yayınlamak en iyisi yanlış bilgi dönen akım sonuçları ve görmek beklenen sonuçları ne olduğunu ise.

Ayrıca Bilginize, ben senin senin $ _GET ayrıştırma umut ve $ _POST önce bu sorgunun içine damping için vars. Düz böyle SQL içine geçirerek iyi bir fikir değildir.

Ben soruyu takip% 100 emin değilim, ama doğru, $current['userid'] "1" olarak baskı olmasına rağmen, sonucu $current['userid'] == "1" yanlış olduğunu söyleyerek görünür?

Bu durum buysa ben userid veritabanı tarafından otomatik olarak üretilen ise bu durumda şüphe rağmen, bu karşılaştırma başarısız olmasına neden değere biniyorlar bazı boşluk veya diğer abur var mümkündür.

Daha iyice örneğin, değerini inceleyerek doğrulayabilirsiniz

var_dump( $current['userid'] ); // Check for whitespace
echo strlen( $current['userid'] ); // Is this greater than 1?