2013-11-15 2 views
0

Я выполняю запрос на выборку из моей базы данных следующим образом:Дополнительные элементы возвращаются из MySQL Query

SELECT DISTINCT r.room_type_id, rt.room_type_name FROM ROOM as r JOIN ROOM_TYPE as rt 
    ON r.room_type_id = rt.room_type_id Where r.homestead_id = 1 
    AND (SELECT Count(*) FROM TENANT as t WHERE r.room_id = t.room_id) < room_capacity 
    AND (room_gender = 'male' OR room_gender='both') 

возвращается:

+--------------+----------------+ 
| room_type_id | room_type_name | 
+--------------+----------------+ 
|   1 | Two-bedroom | 
+--------------+----------------+ 

Это именно то, что я хочу. Но когда я запускаю это через мой PHP:

function getAvailableRoomTypes($homesteadID,$gender){ 
    global $con; 
    $roomtypes = array(); 
    //this gets only available rooms 
    $sql="SELECT DISTINCT r.room_type_id, rt.room_type_name FROM ROOM as r JOIN ROOM_TYPE as rt 
    ON r.room_type_id = rt.room_type_id Where r.homestead_id = $homesteadID 
    AND (SELECT Count(*) FROM TENANT as t WHERE r.room_id = t.room_id) < room_capacity 
    AND (room_gender = '$gender' OR room_gender='both')"; 
    $result = mysqli_query($con, $sql); 
    while($row = mysqli_fetch_array($result)){ 
     $roomtypes += $row; 
    } 
    var_dump($roomtypes); 
    return $roomtypes; 
} 

Я получаю это для моего var_dump:

array(4) { [0]=> string(1) "1" ["room_type_id"]=> string(1) "1" [1]=> string(11) "Two-bedroom" ["room_type_name"]=> string(11) "Two-bedroom" } 

Я ожидал только Получать это:

array(4) {["room_type_id"]=> string(1) "1" ["room_type_name"]=> string(11) "Two-bedroom" } 

Что такое, что дополнительную информацию ? Как я могу избавиться от него, чтобы получить чистую информацию?

После этого я буду преобразовывать массив в объект JSON, и я хочу, чтобы у него были только необходимые части.

+1

Пожалуйста, перед тем, как вы напишете ** какой-нибудь ** более SQL-код, прочитайте ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы избежать серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). Вы не можете просто вставить данные пользователя, такие как '$ gender', в свой запрос. – tadman

+1

Тип результата по умолчанию для ['mysqli_fetch_array'] (http://php.net/mysqli_fetch_array) - это' MYSQLI_BOTH'. Я предлагаю вам внимательно прочитать документацию. – Phil

+0

Благодарим вас за предложение bind_param. Я сделаю это. Я делаю еще несколько исследований по MYSQLI_BOTH и что это влечет за собой. Спасибо за ваши ответы. –

ответ

1

Вы можете использовать mysqli_fetch_assoc вместо mysql_fetch_array.

+0

Благодарим за помощь! –

Смежные вопросы