mysqliの配列 - >クエリは、正しいデータを達成していません
質問
私の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タグで選択されていません。
だから、ここで私が期待します: エコー($ currentperms [ 'newapp']); それはデータベース内に設定されているbecuaseない、1に等しくなるように、結果は「1」です。私が得た文字列をエコーすることによってこれをテストしています。 Newappは、いずれかの表の列ではないので、結果として「1」を返すべきではない。
これによります:
if $current['userid'] == "1") {
echo(" selected ");
}
何もエコーされていない、しかし、変数、スクリプト、以前に使用されている、との出力が「1」です。
私が屋根を突き破って行くよ、私を助けてください:|
@sasa:出力: 成功!配列([0] => 1 [ユーザーID] => 1 [1] => shamil.nunhuck [ユーザー名] => shamil.nunhuck [2] =>シャミルNunhuck [userfullname] =>シャミルNunhuck [3] = > shamil.nunhuck@localhost [USEREMAIL] => shamil.nunhuck@localhost [4] => 6363d731bd7492fe4c33fc3d90fd61bc【のuserPassword] => 6363d731bd7492fe4c33fc3d90fd61bc [5] => 1 [ユーザレベル] => 1 [6] =>管理者[usertitle] = >管理者[7] => 1 [TOS] => 1)アレイ([0] => 1 [ユーザーID] => 1 [1] => 0 [ptodo] => 0 [2] => 0 [usercp] => 0 [3] => 0 [PM] => 0 [4] => 0 [バグ] => 0 [5] => 0 [abug] => 0 [6] => 0 [admincp] => 0 [7] => 0 [intmgs] => 0 [8] => 0のadduser] => 0 [9] => 0 [通過] => 0 [10] => 0 [useredit] => 0 [ 11] => 0 [LISTUSER] => 0 [12] => 0 [newapp] => 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 ");
}
他のヒント
おそらく、現在の結果と何があなたが見ることが予想される結果です。
またちなみに、私はあなたがそのクエリにそれらをダンプする前に、あなたの$ _GETと$ _POST VARSを解析願っています。そのようにまっすぐSQLにそれらを渡すことは良いアイデアではありません。
私は疑問に従う100%わからないんだけど、あなたは「1」、正しいですか?
としてプリントアウト$current['userid'] == "1"
にもかかわらず、$current['userid']
の結果が偽であることを言っているように見えます
私はuserid
がデータベースによって自動生成された場合には、ケースだ疑うが、その場合は、それが可能だ、いくつかの空白や比較が失敗した値になって他のジャンクがあります。
あなたはより徹底的例えば、値を検査することによってこれを確認することができます。
var_dump( $current['userid'] ); // Check for whitespace
echo strlen( $current['userid'] ); // Is this greater than 1?