Я выполняю запрос на выборку из моей базы данных следующим образом:Дополнительные элементы возвращаются из 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, и я хочу, чтобы у него были только необходимые части.
Пожалуйста, перед тем, как вы напишете ** какой-нибудь ** более SQL-код, прочитайте ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы избежать серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). Вы не можете просто вставить данные пользователя, такие как '$ gender', в свой запрос. – tadman
Тип результата по умолчанию для ['mysqli_fetch_array'] (http://php.net/mysqli_fetch_array) - это' MYSQLI_BOTH'. Я предлагаю вам внимательно прочитать документацию. – Phil
Благодарим вас за предложение bind_param. Я сделаю это. Я делаю еще несколько исследований по MYSQLI_BOTH и что это влечет за собой. Спасибо за ваши ответы. –