sql >> Databáze >  >> RDS >> Mysql

PHP PDO Bit(1) vrací nesprávný datový typ

Pole Bit(1) používáte k reprezentaci booleovské hodnoty (TRUE /FALSE ).

Databázový klient mapuje bitová pole (která mohou být větší než jeden bit) na řetězce, ve kterých jeden znak představuje oktet.

Své pole Bit(1) můžete použít jako řetězec PHP pomocí ord() funkce, protože zachází s řetězcem jako s jedním oktetem:

if (ord($Site_Approved)) {
     ...
}

Nemůžete použít $Site_Approved přímo, protože je to řetězec a vždy by byl vyhodnocen jako TRUE bez ohledu na to, zda je jeho první bit nastaven nebo ne.

Alternativně můžete přetypovat hodnotu databáze v dotazu SQL již na desetinné místo, což může být to, co hledáte:

s.Site_Approved+0 AS Site_Approved

Desetinné hodnoty v rozsahu 0 až 1 se chovají velmi podobně jako booleany v PHP (jen nesdílejí typ, zbytek je stejný).




  1. Jak vyhledat pole data pro řetězec pomocí JPA Criteria API

  2. Jak začlenit mysql do výukového programu rychlého startu Jboss

  3. Jak používat funkci Substring v PostgreSQL a Redshift

  4. Provádění více SQL dotazů v jednom příkazu pomocí PHP