mysqli数组 - >查询未获得正确的数据

时间:2009-05-30 18:26:15

标签: php mysqli echo

我的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']); 不等于1,因为它是在数据库中设置的,其结果为“1”。我通过回声获得的字符串测试了这个。 Newapp也不是表中的列,因此它不应该返回“1”。

有了这个:

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

没有任何内容被回显,但是,该变量早先已在脚本中使用,其输出为“1”。

请帮助我,我正在经历屋顶:|

@sasa:输出: 成功!数组([0] =&gt; 1 [用户ID] =&gt; 1 [1] =&gt; shamil.nunhuck [用户名] =&gt; shamil.nunhuck [2] =&gt; Shamil Nunhuck [userfullname] =&gt; Shamil Nunhuck [3] =&gt; shamil.nunhuck@localhost [useremail] =&gt; shamil.nunhuck@localhost [4] =&gt; 6363d731bd7492fe4c33fc3d90fd61bc [userpassword] =&gt; 6363d731bd7492fe4c33fc3d90fd61bc [5] =&gt; 1 [userlevel] =&gt ; 1 [6] =&gt;管理员[usertitle] =&gt;管理员[7] =&gt; 1 [tos] =&gt; 1)数组([0] =&gt; 1 [用户ID] =&gt; 1 [1] =&gt; 0 [ptodo] =&gt; 0 [2] =&gt; 0 [usercp] =&gt; 0 [3] =&gt; 0 [pm] =&gt; 0 [4] =&gt; 0 [bug] = &gt; 0 [5] =&gt; 0 [abug] =&gt; 0 [6] =&gt; 0 [admincp] =&gt; 0 [7] =&gt; 0 [intmgs] =&gt; 0 [8] =&gt; ; 0 [adduser] =&gt; 0 [9] =&gt; 0 [pass] =&gt; 0 [10] =&gt; 0 [useredit] =&gt; 0 [11] =&gt; 0 [listuser] =&gt; 0 [12] =&gt; 0 [newapp] =&gt; 0)

3 个答案:

答案 0 :(得分:2)

如果问题是数据库返回的信息不正确,那么最好只发布代码的mysql部分(尤其是查询),当前结果以及您希望看到的结果。

同样,我希望你在将它们转储到该查询之前解析你的$ _GET和$ _POST变量。将它们直接传递给SQL就好了。

答案 1 :(得分:1)

我不是百分百肯定我会关注这个问题,但您似乎在说$current['userid'] == "1"的结果是假的,尽管$current['userid']打印为“1”,是吗?

如果是这种情况,可能会有一些空格或其他垃圾进入该值会导致比较失败,尽管如果数据库自动生成userid我怀疑是这种情况。

您可以通过更彻底地检查值来验证这一点,例如

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

答案 2 :(得分:1)

试试这段代码:

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