Por que $ wpdb retorna strings para valores inteiros mysql?

Eu acho muito inconveniente e difícil de entender que o comportamento padrão da interface db WordPress é converter todos os tipos inteiros (e flutuantes) em strings.

por exemplo

$wp_posts = $wpdb->get_results('SELECT * from wp_posts'); $unexpected_type = gettype($wp_posts[0]->ID) == 'string'; 

Confirme a minha suspeita de que isso seja feito para suportar tipos inteiros muito grandes (espaçosos) que não são suportados pelo PHP, ou fornecem uma explicação alternativa sobre por que alguém escolheria converter números inteiros em strings.

A segunda parte da minha pergunta, como talvez se esperava, é descobrir se existe um parâmetro de configuração incorporado na class wpdb que permitiria que se solicitasse inteiros para registros de tipo inteiro.

Solutions Collecting From Web of "Por que $ wpdb retorna strings para valores inteiros mysql?"

Como os outros cavalheiros mencionaram nos comentários, devido às bibliotecas que a fonte usa, as cordas são retornadas. Se você precisa converter para um número inteiro para uma comparação ou chamada de function, basta usar a function de absint do WordPress.

 $int_id = absint( $wp_posts[0]->ID ); 

Além disso, não tenho certeza se sua chamada de database é apenas um exemplo, mas eu sugiro usar get_posts , ou melhor ainda, um WP_Query se possível. Isso permite que você mantenha toda a higienização que essas funções incorporaram, mantendo a segurança do seu site bastante sólida. Lembre-se de usar wp_reset_query depois de usar os methods acima para garantir que você esteja retornando ao loop principal.

Como a biblioteca de interface MySQL usada antes do PHP 5.3 retorna tudo como strings. A nova interface (opcional), o MySQL Native Driver, pode retornar tipos inteiros se ativado no tempo de compilation.

Para obter detalhes, consulte bibliotecas e mysqlnd.

Se você estiver executando o Ubuntu:

 sudo apt-get remove php5-mysql sudo apt-get install php5-mysqlnd sudo service apache2 restart