1. ホーム
  2. php

[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。

2022-01-26 06:06:18

質問

<ブロッククオート

致命的なエラーです。Uncaught Error: Call to undefined function mysql_escape_string() in C:\xampphtdocsphoenixprojectregister.php:16 Stack trace: #0 {main} thrown in C:╱xampp↩htdocs╱phoenixproject╱register.php on line 16

どうすれば直るのでしょうか?

<?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;

?>

そういえば、mysqlとmysqliを混在させようとしていましたね...。

どのように解決するのですか?

ここでお役に立てるように... (コメント欄が長いので)

あなたの require("config.php"); を含む必要があります。

補足 お使いのホストに適した設定をしてください。

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

そして、エスケープ関数を変更し mysqli_ のバージョンで、接続パラメータを渡します。

$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);

ここでも、クエリに同じことが言えます。を使うことで i のバージョンで、最初のパラメータとして接続を渡します。

mysqli_query($link, "INSERT INTO ...

を使用してクエリのエラーをチェックします。 mysqli_error($link);

そこで、クエリを次のように修正します。

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

を行い

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

API mixingに関しては、Stackの以下の記事も読んでみてください。


脚注です。

パスワード

また、パスワードを平文で保存している可能性があることにも気づきました。これはお勧めできません。もし、いつかこの方法でライブを行うつもりなら、パスワードをプレーンテキストとしてデータベースに保存しないでください。

以下を参考にしてください。

その他のリンク