Если значения, которые вы возвращаете из базы данных, являются строками, но исходный тип данных является целочисленным, то вы, вероятно, хотите, чтобы ваш DAO (объект доступа к данным или что-то еще, что извлекает данные) приводил данные к ожидаемым типам данных , Таким образом, код PHP, который смотрит на значения, смотрит на ожидаемый тип данных.
Проблема, конечно, в том, что нет соответствия 1-1 между типами данных, которые определяет БД, и типами данных, которые определяет PHP. Тем не менее, по большей части это не проблема, так как для большинства типов, которые мы обычно используем, есть эквивалентные типы: int, float, bool, string.
В результате, между местом, где вы запрашиваете базу данных, и местом, где вы проверяете эти значения, эти значения должны быть преобразованы в ожидаемые вами типы данных. Я только что протестировал mysql_fetch_object () в таблице MySQL, содержащей int (10) и varchar (50); оба поля всегда вытягивались PHP как строка типа. Поэтому, если вы хотите, чтобы одно из полей рассматривалось как int, приведите его к int, прежде чем что-либо делать с ним. Например:
$rs = mysql_query("SELECT * FROM table");
while ($row = mysql_fetch_object($rs)) {
$RealRow->id = (int)$row->id;
$RealRow->name = $row->name;
// etc.
}
// ... later ...
if ($RealRow->status == 0) {
// do something
}
Запрос и материал RealRow должны быть внутри класса / метода, чтобы он был инкапсулирован; таким образом, ЛЮБАЯ часть вашего кода, которая получает данные из table
, всегда получит вместо этого объект $ RealRow, в котором все будет настроено на соответствующие типы данных. Конечно, если вы меняете типы данных, это требует ручного редактирования DAO, чтобы справиться с приведением типов; также можно было бы запросить БД, чтобы получить тип каждого поля (с «SHOW COLUMNS FROM table»), и автоматически приведёт поля к нужному типу данных.