2009-05-30 12 views
2

私のmysqli_fetch_array(mysqi_query($db, $query))は、データベースから正しい情報を取得していないようで、PHPアプリケーションが正常に機能していません。ここでmysqli配列 - >クエリが正しいデータを取得しない

は、クエリ、並行

<?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」です。

私を助けてください、私は屋根を通過しています:| Shamil.nunhuck [2] => Shamil.nunhuck [2] => Shamil.nunhuck [2] => Shamil.nunhuck [2] => Shamil.nunhuck [2] => [userfullname] => 1 [userfullname] => 1シャミル・ヌンハック[3] => [email protected] [useremail] => [email protected] [4] => 6363d731bd7492fe4c33fc3d90fd61bc [userpassword] => 6363d731bd7492fe4c33fc3d90fd61bc [ [0] => 1 [userid] => 1 [1] => 0 [ptodo] =>管理者[ユーザ] =>管理者[7] => 1 [tos] => 0 [2] => 0 [usercp] => 0 [3] => 0 [pm] => 0 [4] => 0 [bug] => 0 [5] => 0 [abug] => 0 [ 6] => 0 [admin] => 0 [7] => 0 [intmgs] => 0 [8] => 0 [adduser] => 0 [9] => 0 [pass] => 0 [useredit] => 0 [11] => 0 [listuser] => 0 [12] => 0 [newapp] => 0)

+0

全体のスクリプトが出てきませんでした:Z – bear

+0

正しいコードインデントを使用し、cスタックオーバーフローのodeモード。あなたのコードは現在読めません。 –

+0

私は試しましたが、コードが多くのhtmlを使用するため、解析されています。 – bear

答えて

1

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

With this:

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

は、それは次のようになります。

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

警告:mysqli_affected_rows()は、パラメータ1がmysqli、/home/radonsys/public_html/control/useredit.phpの11行目に指定されていると想定しています。 Nope。 11行目: if(mysqli_affected_rows($ sql)== 0){ – bear

+0

申し訳ありません、投稿を編集しました。もう一回やってみよう。 – sasa

+0

出力を含むように投稿を更新しました! – bear

2

データベースが間違った情報を返すという問題がある場合は、おそらくコードのmysql部分(esp。クエリ)、現在の結果、およびあなたが見たい結果が表示されます。

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

+0

投稿を更新しました。私は現在、ポストとバールをダンプしませんが、現在、PHPアプリケーション全体でこれが改訂されています。 – bear

1

私は疑問に従いますが、あなたは正しい、$current['userid']は「1」としてプリントアウトするにもかかわらず、$current['userid'] == "1"の結果が偽であることを言っているように見える100%わからないんだけど?

この場合、空白やその他の迷惑メールが値に入り込み、比較が失敗する可能性がありますが、useridがデータベースによって自動生成されているとは限りません。

これを確認するには、値をより詳細に検査します(例:

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

または多分ちょうど構文エラー:

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

結果: 文字列(1) "1" エコー - 1 これはマッチです! – bear

関連する問題