web-dev-qa-db-fra.com

Erreur non capturée: appel de la fonction non définie mysql_escape_string ()

Erreur irrécupérable: Erreur non récupérée: Appel de la fonction non définie mysql_escape_string () dans C:\xampp\htdocs\phoenixproject\register.php: 16 Trace de pile: # 0 {principal} renvoyée dans C:\xampp\htdocs\phoenixproject\register.php à la ligne 16

Comment régler ceci?

<?php
require("config.php");
?>
<?php
if(isset($_POST['submit'])){

$email1 = $_POST['email1'];
$email2 = $_POST['email2'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];

if($email1 == $email2) {
    if($pass1 == $pass2) {
//All good. Nastavi broo.

$name = mysql_escape_string($_POST['name']);
$lname = mysql_escape_string($_POST['lname']);
$uname = mysql_escape_string($_POST['uname']);
$email1 = mysql_escape_string($email1);
$email2 = mysql_escape_string($email2);
$pass1 = mysql_escape_string($pass1);
$pass2 = mysql_escape_string($pass2);

mysql_query("INSERT INTO `users` (`id`, `name`, `lname`, `uname`, `email`, `pass`) VALUES (NULL, '$name', '$lname', '$uname', '$email1', '$pass1')") or die (mysql_error());



}else{
  echo "Sorry, your password is not corrext.";
  exit();
}
}else{
  echo "Sorry!";
}

} // brace for submit conditional

$form = <<<EOT
<form action="register.php" method="POST">
First Name: <input type="text" name="name" /></br>
Last Name: <input type="text" name="lname" /></br>
Username: <input type="text" name="uname" /></br>
Email: <input type="text" name="email1" /></br>
Confirm Email: <input type="text" name="email2" /></br>
Password: <input type="password" name="pass1" /></br>
Confirm Password: <input type="password" name="pass2" /></br>
<input type="submit" value="Register" name="submit" />
</form>
EOT;
echo $form;

?>

Eh bien, je sais que j’essayais de mélanger mysql et mysqli .... 

6
Amar Muratović

Pour vous aider ici ... (trop long pour un commentaire)

Votre require("config.php"); devrait contenir les éléments suivants:

Sidenote: Utilisez les paramètres appropriés pour votre hôte.

$link = mysqli_connect("localhost", "username", "mpassword", "database") or die($link);

Ensuite, modifiez vos fonctions d'échappement pour qu'elles utilisent la version mysqli_ et transmettez-lui le paramètre de connexion:

$name = mysqli_real_escape_string($link, $_POST['name']);
$lname = mysqli_real_escape_string($link, $_POST['lname']);
$uname = mysqli_real_escape_string($link, $_POST['uname']);
$email1 = mysqli_real_escape_string($link, $email1);
$email2 = mysqli_real_escape_string($link, $email2);
$pass1 = mysqli_real_escape_string($link, $pass1);
$pass2 = mysqli_real_escape_string($link, $pass2);

Encore une fois, même chose pour la requête. Utiliser la version i et passer la connexion à celle-ci en tant que premier paramètre.

mysqli_query($link, "INSERT INTO ...

Recherchez les erreurs dans votre requête à l'aide de mysqli_error($link);

Donc, vous pouvez modifier la requête pour lire comme

$query = mysqli_query($link, "INSERT INTO ...

et faire

if(!$query){
   echo "Error: " . mysqli_error($link);
   }

Lisez également ce qui suit sur Stack en ce qui concerne le mélange API:


Notes de bas de page.

Mots de passe

J'ai aussi remarqué que vous stockiez peut-être les mots de passe en texte brut. Ceci n'est pas recommandé. Si vous avez l’intention de vous associer à cela, ne stockez PAS les mots de passe sous forme de texte brut dans votre base de données. 

Consultez le suivant.

Autres liens:

7
Funk Forty Niner

Le mieux est de déclasser la version PHP vers la version 5.6 et tout se mettra en place. L'erreur sera alors supprimée à 100%.

J'espère que cela t'aides!

2
Sukhvir Singh

Changez votre version PHP en PHP 5.6 et cela fonctionnera bien.

2
Waqas Ahmad