/** * Ajoute une colonne dans une table de la base de données * @param STRING $table Le nom de la table * @param STRING $row Le nom de la nouvelle colonne * @param STRING $typeRow Le type de colonne à créer (default "VARCHAR(64)" * @param STRING $defaultVal La valeur par défaut pour la colonne (optionnel, et inutile pour le type "TEXT") * @return BOOLEAN TRUE si succès, FALSE si erreur. */ public static function addNewCol($table = '', $row = '', $typeRow = 'VARCHAR(64)', $defaultVal = "") { if ($table == '') { throw new Exception("Infos::addNewCol() : Il manque le nom de la table"); } if ($row == '') { throw new Exception("Infos::addNewCol() : Il manque le nom de la colonne"); } if (Infos::colExiste($table, $row)) { throw new Exception("Infos::addNewCol() : Cette colonne existe déjà"); } $extraReq = ""; if (preg_match('/CHAR|TEXT/i', $typeRow)) { $extraReq = "CHARACTER SET utf8 COLLATE utf8_general_ci "; } $extraReq .= "NOT NULL"; if (!preg_match('/TEXT/i', $typeRow)) { $extraReq .= " DEFAULT '{$defaultVal}'"; } $pdoTmp = new PDO(DSN, USER, PASS, array(PDO::ATTR_PERSISTENT => false)); $pdoTmp->query("SET NAMES 'utf8'"); $pdoTmp->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sqlAlter = "ALTER TABLE `{$table}` ADD `{$row}` {$typeRow} {$extraReq}"; $a = $pdoTmp->prepare($sqlAlter); return $a->execute(); }