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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mettre une expression régulière dans un champ de la bdd

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

par Mazarini » 10 juil. 2012, 13:50

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.

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

par BlueDream » 10 juil. 2012, 10:08

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.