Page 1 sur 1

Mettre une expression régulière dans un champ de la bdd

Posté : 10 juil. 2012, 10:08
par BlueDream
Bonjour tout le monde,


Je suis nouveau dans ce forum et débutant en php. Je souhaite enregistrer les modifications de la base de données dans une table que j'appelle modifications donc j'ai mis un champ requête qui va contenir la requête à exécuter pour mettre à jour la base de données. Ceci dit, j'ai créé une fonction qui met à jour la table modifications à chaque fois qu'il y a un changement. Voici mon code :

Code : Tout sélectionner

$result = $db_sync->CreateTable($tables_home[$i], $field); $db_change->AddRecord("$result"); function CreateTable($name, $fields, $fp) { mysql_select_db($this->database, $this->dbp); $primary_keys = array(); $sql_f = array(); for ($i = 0; $i < count($fields); $i++) { if ($fields[$i]['key'] == 'PRI') { $primary_keys[] = $fields[$i]['name']; } $sql_f[] = "`{$fields[$i]['name']}` {$fields[$i]['type']} " . ($fields[$i]['null'] ? '' : 'NOT') . ' NULL' . (strlen($fields[$i]['default']) > 0 ? " default '{$fields[$i]['default']}'" : '') . ($fields[$i]['extra'] == 'auto_increment' ? ' auto_increment' : ''); } $sql = "CREATE TABLE `{$name}` (" . implode(', ', $sql_f) . (count($primary_keys) > 0 ? ", PRIMARY KEY (`" . implode('`, `', $primary_keys) . "`)" : '') . ')'; return $sql; } function AddRecord($change_set){ $sql = "INSERT INTO changes VALUES('','$change_set',CURRENT_TIMESTAMP)"; return mysql_query($sql, $this->dbp); }

Le problème c'est qu'il n'ajoute aucune donnée sauf quand je remplace $result par une simple chaine de caractère. Aidez-moi s'il vous plait à résoudre ce problème qui me torture depuis 5 jours déjà.

Bonne journée à tous et merci d'avance pour vos réponses.

Re: Mettre une expression régulière dans un champ de la bdd

Posté : 10 juil. 2012, 13:50
par Mazarini
Bonjour,

Après mysql_query(), Il faut vérifier la valeur de mysql_error() pour voir le problème et afficher le message et l'ordre sql.

Je t'invite à utiliser mysql_real_escape_string() sur la chaine que tu souhaites insérer pour éviter des problèmes de quote.
Si ton ordre ssl est du type : VALUES('...'...') ca pose des problèmes, par contre VALUES('...\'...') marche.