MySQL запрос только возвращает COUNT

0

На моем сайте я выполняю SQL-запрос для заполнения информации. Раздел кода, делающий так:

$user = mysqli_real_escape_string(db_connect(),$_SESSION['UserName']);
$sqlStr = "SELECT * FROM tbl WHERE username='{$user}'";
$out = mysqli_query(db_connect(), $sqlStr);

$settings = False;
if(!(0 == mysqli_num_rows($out))){
    $settings = True;
    $res = mysqli_fetch_assoc($out);
}

Который должен возвращать только одну строку для данного пользователя. Тем не менее, выходной сигнал является чрезвычайно интересным. Для данного пользователя, который имеет запись в базе данных, вывод выглядит следующим образом:

mysqli_result Object ( [current_field] => 0 [field_count] => x [lengths] => Array ( [x] => x ) [num_rows] => 1 [type] => 0 )

Это правильно, но тогда, когда выполняется mysqli_fetch_assoc, результат будет следующим:

Array ( [COUNT] => 2 ) 

Я совершенно не понимаю, как он вообще возвращает COUNT, не говоря уже о 2 рядах. В базе данных нет даже 2 строк. Это происходит для любого имени пользователя.

  • 0
    Если соединение не открыто, mysqli_real_escape_string () вернет пустую строку. Мне кажется, что вы подключаетесь с помощью db_connect () после использования функции escape-строки. Это может быть проблемой для вас, но в любом случае что-то должно быть изменено. Я рекомендую pdo, если это работает для вашего проекта.
  • 0
    Кроме того, стоит использовать строгие сравнения везде, где вы можете === . Кроме того, в PHP логические значения имеют строчные значения true , false , а не True , False поскольку они являются псевдонимами (но я разборчив).
Показать ещё 4 комментария
Теги:
mysqli

1 ответ

0

Обходной путь был найден. Вывод итерируется с циклом while() заранее. Ниже приведен рабочий код:

$settings = False;
If(!(0 == mysqli_num_rows($out))){
    $settings = True;
    while($res = mysqli_fetch_assoc($out)){
        $var = $res['var'];

        break;
    }
}

а затем с помощью $ var по всему сайту вместо $ res ['var']. Это правильно заполняет информацию. Это устраняет проблему, хотя я до сих пор не понимаю, в чем причина проблемы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню