Это б y в SQL-диалектах, о которых я могу думать небрежно. Я знаю нескольких людей, которые по привычке добавляют order by 0 desc
или order by 1
к специальным запросам, первым выбирающим то, что обычно является столбцом идентификатора, а второе, что часто является столбцом «Имя» или аналогичным. Они запрашивают, основываясь на порядковой позиции поля в запросе (или схеме, в случае *)
Чтобы получить столбец с именем 5, вам необходимо использовать соответствующий механизм SQL-цитирования для вашего диалекта и конфигурации. Например, Microsoft Sql и Access обычно используют select * from tablecomments where [5]=5
; в Postgres и Oracle вы должны использовать select * from tablecomments where "5"=5
, а в Mysql котируемые идентификаторы котируются с обратным адресом select * from tablecomments where `5`=5
. В Microsoft SQL вы также можете сделать вещи более похожими на Oracle и Postgres, если ваш сеанс имеет SET QUOTED_IDENTIFIER ON, и в этом случае вы использовали бы кавычки вместо квадратных скобок.
Как в стороне, но очень важно, вы не должны вводить пользователя и напрямую вставлять его в SQL. Если кто-то перехватил передачу HTTP между вашим Android-приложением и вашим PHP-приложением (тривиально с прокси, например, Charles или Fiddler), они смогут воспроизвести HTTP-запрос с произвольным SQL-инъекцией. Как отмечали другие комментаторы, вместо этого используйте параметризованный запрос.
Поскольку вы пытаетесь изменить сам запрос, а не параметры, вам может потребоваться указать разрешенные имена полей (или сравнить строку, которую вы отправили, с полями, представленными в схеме).
'$ result = mysql_query (" SELECT * FROM TableComments WHERE pid = 5) ' – samayo
Имена столбцов, начинающиеся с числа, задают проблемы. – Patashu
Это должно быть' WHERE '$ pid'' (wrapping $ pid in backticks) .Когда я действительно хотел бы знать, это то, что было в виду, кто бы ни думал об этой схеме именования. – raina77ow