1

データベースから正しい情報を取得してmysqli_fetch_array(mysqi_query($db, $query))いないようです。そのため、PHPアプリケーションが正常に機能していません。

これがクエリです、

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

同時に、if ($current['userid'] == "1") {echo(" selected ");}は何も出力しないため、SELECTタグで正しいオプションが選択されていません。

だから、ここで:私は期待します:echo($ currentperms ['newapp']); 1に等しくないのは、データベースでそのように設定されているためです。その結果は「1」になります。得られた文字列をエコーすることでこれをテストしました。Newappもテーブルの列ではないため、結果として「1」を返すことはありません。

これとともに:

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

何もエコーされていませんが、変数は以前のスクリプトで使用されており、その出力は「1」です。

私を助けてください、私は屋根を通り抜けています:|

@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[ユーザーレベル]管理者[ユーザータイトル]=>管理者[7]=>1 [tos] => 1)配列([0] =>1[ユーザーID]=>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)

4

3 に答える 3

2

問題がデータベースが間違った情報を返すことである場合は、コードの mysql 部分 (特にクエリ)、現在の結果、および期待される結果を投稿するのがおそらく最善です。

また、そのクエリにダンプする前に、 $_GET および $_POST 変数を解析することを願っています。そのようにSQLに直接渡すのは良い考えではありません。

于 2009-05-30T18:40:41.937 に答える
1

質問に100%従うかどうかはわかりませんが、「1」と出力されている$current['userid'] == "1"にもかかわらず、結果が間違っているとおっしゃっているようですよね?$current['userid']

useridその場合、データベースによって自動生成された場合はそうではないと思いますが、値に空白やその他のジャンクが入り込んで比較が失敗する可能性があります。

これは、値をより徹底的に調べることで確認できます。

var_dump( $current['userid'] ); // Check for whitespace
echo strlen( $current['userid'] ); // Is this greater than 1?
于 2009-05-30T19:33:54.717 に答える
0

このコードを試してください:

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

または、単なる構文エラーかもしれません:

これとともに:

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

そのはず:

if($current['userid'] == 1) {
    echo(" selected ");
}
于 2009-05-30T19:47:52.193 に答える