Mysql
 sql >> Database >  >> RDS >> Mysql

Verifica il tipo di variabile PHP rispetto a un tipo di dati MySQL

Se i dati provengono da un file CSV, devi ricordare che tutti i valori saranno stringhe (anche le stringhe numeriche hanno ancora un tipo di stringa).

Quindi non puoi usare is_int() /is_float() /etc., perché ti dice solo del tipo o la variabile. Potresti usare is_numeric() per controllare il valore, ma ciò consentirà cose come la notazione esponenziale come "+0123.45e6". A volte ctype_digit() può essere utile per testare numeri interi per questo motivo, poiché consentirà solo ai numeri 0-9 di essere presenti in una stringa affinché restituisca true.

Le espressioni regolari possono essere utilizzate anche per identificare i tipi di dati basati su modelli, ma è necessario prestare attenzione al sovraccarico delle prestazioni quando si ha a che fare con set di dati di grandi dimensioni. È quasi sempre consigliabile dal punto di vista delle prestazioni utilizzare il preg_ famiglia di funzioni al posto di ereg funzioni.

Se stai convalidando cose come i tipi ENUM o SET, probabilmente dovrai creare un array contenente valori legali (o estrarli con una query) e quindi confrontare il valore con in_array() .

Per i campi CHAR/VARCHAR, puoi analizzare la definizione della colonna e quindi verificare se la lunghezza del valore rientra nei vincoli.

Se il tipo NULL è consentito su una qualsiasi delle tue colonne, dovresti anche verificarlo (e probabilmente mappare valori vuoti o la stringa "NULL" su un valore NULL effettivo).

Se stai cercando di sfuggire a questi valori in modo corretto, esamina l'utilizzo di istruzioni preparate e l'estensione PDO (PHP Data Objects). Ciò consente a MySQL di eseguire correttamente l'escape dei dati in base al tipo. (Puoi anche usare istruzioni preparate con MySQLi.)

Se stai cercando tipi di dati specifici e come identificarli, potresti voler modificare la tua domanda per facilitare risposte più complete.