массив mysqli -> запрос не достигает правильных данных - PullRequest
2 голосов
/ 30 мая 2009

my 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: вывод: Success! Array ([0] => 1 [userid] => 1 [1] => shamil.nunhuck [имя пользователя] => shamil.nunhuck [2] => Шамиль Нунхук [userfullname] => Шамиль Нунхук [3] = > shamil.nunhuck@localhost [USEREMAIL] => shamil.nunhuck@localhost [4] => 6363d731bd7492fe4c33fc3d90fd61bc [UserPassword] => 6363d731bd7492fe4c33fc3d90fd61bc [5] => 1 [userlevel] => 1 [6] => Администратор [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 ]

2 голосов
/ 30 мая 2009

Если проблема в том, что база данных возвращает неверную информацию, вероятно, лучше всего просто опубликовать часть кода mysql (особенно запрос), текущие результаты и результаты, которые вы ожидали увидеть.

также, к вашему сведению, я надеюсь, что вы проанализировали ваши переменные $ _GET и $ _POST перед тем, как выбросить их в этот запрос. Передавать их прямо в SQL, как это не очень хорошая идея.

1 голос
/ 30 мая 2009

Попробуйте этот код:

//  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 ");
}
1 голос
/ 30 мая 2009

Я не уверен на 100%, что следую этому вопросу, но вы, похоже, говорите, что результат $current['userid'] == "1" неверен, несмотря на то, что $current['userid'] выводится как "1", верно?

Если это так, возможно, в значение попадает какой-то пробел или другой мусор, что приводит к сбою сравнения, хотя я сомневаюсь, что это так, если userid автоматически генерируется базой данных.

Вы можете проверить это, проверив значение более тщательно, например,

var_dump( $current['userid'] ); // Check for whitespace
echo strlen( $current['userid'] ); // Is this greater than 1?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...