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

Porovnejte typ proměnné PHP s datovým typem MYSQL

Pokud data pocházejí ze souboru CSV, musíte si pamatovat, že všechny hodnoty budou řetězce (i číselné řetězce mají stále typ řetězce).

Takže nemůžete použít is_int() /is_float() /atd., protože to říká pouze o typu nebo proměnná. Můžete použít is_numeric() zkontrolovat hodnotu, ale to umožní věci jako exponenciální zápis jako "+0123.45e6". Někdy ctype_digit() může být z tohoto důvodu užitečné pro testování celých čísel, protože povolí, aby v řetězci byla přítomna pouze čísla 0-9, aby vrátil hodnotu true.

Regulární výrazy lze také použít k identifikaci datových typů založených na vzorech, ale při práci s velkými datovými sadami musíte sledovat výkonovou režii. Z hlediska výkonu je téměř vždy vhodné použít preg_ rodina funkcí namísto ereg funkce.

Pokud ověřujete věci, jako jsou typy ENUM nebo SET, budete pravděpodobně muset vytvořit pole obsahující platné hodnoty (nebo je extrahovat pomocí dotazu) a poté proti nim hodnotu porovnat pomocí in_array() .

U polí CHAR/VARCHAR můžete analyzovat definici sloupce a poté zkontrolovat, zda délka hodnoty spadá do omezení.

Pokud je v některém z vašich sloupců povolen typ NULL, měli byste to také zkontrolovat (a pravděpodobně namapovat prázdné hodnoty nebo řetězec "NULL" na skutečnou hodnotu NULL).

Pokud chcete tyto hodnoty skutečně správně ukončit, podívejte se na použití připravených příkazů a rozšíření PDO (PHP Data Objects). To umožňuje MySQL správně uniknout datům na základě typu. (Můžete také použít připravené příkazy s MySQLi.)

Pokud hledáte konkrétní datové typy a jak je identifikovat, možná budete chtít upravit svou otázku, abyste usnadnili úplnější odpovědi.




  1. Oracle Unique Constraint na základě hodnoty sloupce

  2. COUNT (DISTINCT column_name) Nesrovnalosti vs. COUNT (column_name) v SQL Server 2008?

  3. SUM skupina řádků podle názvu pomocí pdo

  4. Vyberte řádky, které nejsou přítomny v jiné tabulce