Das ist nicht so einfach, wie es scheint, Ihre is_MEDIUMINT()
Funktion könnte leicht werden:
is_MEDIUMINT()
is_MEDIUMINT_NULL()
is_MEDIUMINT_NOTNULL()
is_MEDIUMINT_UNSIGNED()
is_MEDIUMINT_UNSIGNED_NULL()
is_MEDIUMINT_UNSIGNED_NOTNULL()
Dann Sie in das Problem von verschiedenen Datenbanken Typen ausführen, SQLite beispielsweise nur eine INT
Typ während MySQL mindestens 5 (TINYINT
, SMALLINT
, MEDIUMINT
, INT
, BIGINT
) hat, nicht Aliase (wie INTEGER
, BOOL
, BOOLEAN
und SERIAL
) Zählen und f Loat-Typen - was aufgrund des Arguments variable precision noch schwieriger zu implementieren wäre. Beachten Sie, dass ich immer noch einige wichtige Funktionen wie UNIQUE
und Fremdschlüsseleinschränkungen ignoriere, die nur in der DB validiert werden können.
Ich verstehe nicht, warum Sie solche Funktionen für nützlich halten würden, denn wenn Sie Ihre Datenbank so einrichten könnten, dass sie im strikten Modus arbeitet und dann einfach versucht, die Werte einzufügen. Wenn die Abfrage fehlschlägt, wissen Sie, dass etwas nicht stimmt. Angabe das MySQL Handbuch:
In nicht strikten Modus wird, wenn ein out-of-Range-Wert in eine integer-Spalte zugeordnet ist, speichern MySQL den Wert den entsprechenden Endpunkt des Spaltendatentypen repräsentiert Angebot. Wenn Sie 256 in einer TINYINT oder TINYINT UNSIGNED Spalte speichern, speichert MySQL 127 bzw. 255.
Worin liegt der Sinn der Validierung des Wertes vor dem Einfügen?
if (is_MEDIUMINT($var)) {
$this->db->insert($anothervar);
}
else {
// do what?
}
Wenn Sie versuchen, Fehler führen Sie die Abfrage in einer Transaktion oder verwenden Sie die INSERT OR IGNORE
Syntax zu vermeiden.
Niemand, der davon weiß? Ich kann nicht der Erste sein, der denkt, dass das nützlich sein könnte! – Industrial
Die BOUNTY ist eingeschaltet! – Industrial