Partage
  • Partager sur Facebook
  • Partager sur Twitter

compatibilité mysql et mariadb

erreur

    14 août 2018 à 18:05:00

    bonjour mon hébergeur a migré ver php 7 du coup mes ancien script ne fonctionnent plus pour l'inscription dans une base de donnée, j'ai beau essayer de suivre les cour en ligne étant que mécanicien et donc amateur éclairer seulement je n'arrive pas a revoir ce bout de script pour qu'il fonctionne pourriez vous m'aider a le modifier svp merci d'avance il me sers pour des inscription sur un site technique donc relativement important pour moi bien sur.

    je sais que MySQL a été abandonner et que maintenant il faut soit passer par pdo soit par mysqli, donc est ce qu'il faut que je réécrive tous le script ou que je modifie seulement certaines partie

    $base = mysql_connect ($host, $user, $pass);
    		mysql_select_db ($dbname, $base); //connection a la base.
    		$sql = 'SELECT count(*) FROM inscription WHERE login="'.mysql_escape_string($_POST['identifiant']).'"';
    		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     		$data = mysql_fetch_array($req);     
    }
    
    if ($data['login'] == $_POST['login']){
    echo'<script type="text/javascript">
    alert("identifiant deja utilise veuillez en choisir un nouveau merci ");
    window.location.replace("index.php");
    </script>';
    }
    //si identifiant non present enregistrement des données dans la base
        
    if ($data[0] == 0){
    	  $sql = 'INSERT INTO test1 VALUES("",
    							"'.mysql_escape_string($_POST['nom']).'",
    							"'.mysql_escape_string($_POST['prenom']).'",
    							"'.mysql_escape_string($_POST['mail']).'",
    							"'.mysql_escape_string($_POST['identifiant']).'",
    							"'.mysql_escape_string(md5($_POST['pass'])).'",
    							"'.mysql_escape_string($_POST['departement']).'",
    							"'.mysql_escape_string($_POST['statut']).'")'; 
    
         mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());

     par avance merci

    christophe

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      14 août 2018 à 18:43:54

      Alors première étape, dégage absolument toutes les fonction mysql_.... Cette extension est dépréciée depuis la nuit des temps et aujourd'hui, depuis PHP7.0, totalement supprimée de PHP.

      Ses remplaçants sont:

      • PDO (recommandé pour un usage basique)
      • mysqli

      Je t'invite à prendre la documentation PHP PDO.

      • Partager sur Facebook
      • Partager sur Twitter
        14 août 2018 à 20:02:26

        Bonjour,

        Je ne vois pas trop le rapport entre ton titre et le contenu de ta question...

        Il faut en effet que tu réécrives toutes les parties qui concernent le requêtage. Mysqli te semblera plus proche en terme de syntaxe si tu restes en procédural, mais si tu passes aux requêtes préparées, PDO serait plus simple.

        • Partager sur Facebook
        • Partager sur Twitter
          16 août 2018 à 0:26:32

          j'ai modifier mon code en utilisant la doc de mysqli ce qui donne ceci:

          //verification des mots de passe
          if($_POST['pass'] != $_POST['pass_confirm']) {  
          	 $erreur = '<span style="color:red;"><strong>Les 2 mots de passe sont diff&#233rents.</strong></span>';  }
          //connection a la base et verification de la presence de l'identifiant		
          else {
          	
          	$base = mysqli_connect('localhost','attelage_chr','cedcyr1084');
          	    mysqli_select_db('attelage_accesattelage',$base); 
          		$sql = 'SELECT count(*) FROM inscription WHERE login="'.mysqli_real_escape_string($_POST['identifiant']).'"';
          		$req = mysqli_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysqli_error());
           		$data = mysqli_fetch_array($req);     
          
          //si identifiant non present enregistrement des données dans la base
              
          if ($data[0] == 0){
          	  $sql = 'INSERT INTO inscription VALUES(
          							"'.mysqli_real_escape_string($_POST['nom']).'",
          							"'.mysqli_real_escape_string($_POST['prenom']).'",
          							"'.mysqli_real_escape_string($_POST['mail']).'",
          							"'.mysqli_real_escape_string($_POST['identifiant']).'",
          							"'.mysqli_real_escape_string(md5($_POST['pass'])).'",
          							"'.mysqli_real_escape_string($_POST['departement']).'",
          							"'.mysqli_real_escape_string($_POST['statut']).'")'; 
          
               mysqli_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysqli_error());  

          mais j'ai cette erreur qui apparait : 

          Erreur SQL !
          SELECT count(*) FROM inscription WHERE login=""

          je suppose que cela vient de la ligne

          $sql = 'SELECT count(*) FROM inscription WHERE login="'.mysqli_real_escape_string($_POST['identifiant']).'"';

          et je ne trouve pas dans la notice de Mysqli comment la reformuler 

          auriez vous une piste a me suggérer

           par avance merci

           

          • Partager sur Facebook
          • Partager sur Twitter
            16 août 2018 à 9:26:31

            Salut !

            Je pense que tu as loupé un détail dans la documentation des fonctions mysqli_*, parce qu'elles demandent presque toutes un paramètre supplémentaire par rapport aux vieilles fonctions mysql_*. La version qui en demande le même nombre utilise une autre syntaxe.

            • Partager sur Facebook
            • Partager sur Twitter

            compatibilité mysql et mariadb

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown