首页 > 解决方案 > 如何在 php 中禁用或影响 null 变量

问题描述

我有 3 个网页,一个用于登录,一个用于注册,最后一个是主页(索引)。我有 2 个来自登录的变量和 5 个来自注册的变量,所有变量都被发送到主页,所以当我在登录变量中注册时没有值,所以它给出错误“通知未定义索引” ,当我注册时也会发生同样的情况,但错误显示了登录的变量。我在 google 中进行了很多搜索,我发现了一个名为 unset 的函数来禁用变量,但没有任何反应。

// Sous WAMP
$bdd = new PDO('mysql:host=localhost;dbname=test exbook;charset=utf8', 'root', '');
$reponse = $bdd->query('SELECT * FROM registration');
$nom = $_POST['nom'];
$birthday = $_POST['birthday'];
$genre = $_POST['genre'];
$email = $_POST['email'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

if (isset($nom , $birthday , $genre , $email, $password )) {
    unset($nom);
    unset($birthday);
    unset($genre);
    unset($email);
    unset($password);
} else {
    $req = $bdd->prepare('INSERT INTO registration(`Nom`, `Date de naissance`, `Genre`, `Email`, `Password`) VALUES(?,?,?,?,?)');
    $req->execute(array($nom, $birthday, $genre, $email, $password));
}

while ($donnees = $reponse->fetch()) {
    echo $donnees['Nom'];
}

$bdd = new PDO('mysql:host=localhost;dbname=test exbook;charset=utf8', 'root', '');
$emailsignup = $_POST['emailsignup'];
if (isset($emailsignup)) {
    unset($emailsignup);
} else{
    $bdd1 = $bdd->query('SELECT * FROM registration WHERE $emailsignup');
}

感谢您阅读本文并尝试提供帮助。祝你今天过得愉快 :)

标签: php

解决方案


未定义的索引错误来自 $_POST 变量。当您尝试emailsignup参数时nom, birthday...... $_POST 数组中不存在。你可以这样做:

           // Sous WAMP
            $bdd = new PDO('mysql:host=localhost;dbname=test exbook;charset=utf8', 'root', '');
            $reponse = $bdd ->query('SELECT * FROM registration');
            $hasnom=isset($_POST['nom']);
            $hasbirthday=isset($_POST['birthday']);
            $hasgenre=isset($_POST['genre']);
            $hasemail=isset($_POST['email']);
            $haspass = $isset($_POST['pass']);


            if ($hasnom && $hasbirthday && $hasgenre && hasemail && haspass) {
              $nom=$_POST['nom'];
              $birthday=$_POST['birthday'];
              $genre=$_POST['genre'];
              $email=$_POST['email'];
              $password=password_hash($_POST['password'], PASSWORD_DEFAULT);

                $req = $bdd ->prepare('INSERT INTO registration(`Nom`, `Date de naissance`, `Genre`, `Email`, `Password`) VALUES(?,?,?,?,?)');
                $req->execute(array($nom,$birthday,$genre,$email,$password));   
             }
              while ($donnees = $reponse->fetch())
              {
                echo $donnees['Nom'];
              }
          ?>
          <?php
                $bdd = new PDO('mysql:host=localhost;dbname=test exbook;charset=utf8', 'root', '');
                $hasemailsignup=isset($_POST['emailsignup']);
                if ($hasemailsignup) {
                    $emailsignup = $_POST['emailsignup'];
                    $bdd1=$bdd ->query('SELECT * FROM registration WHERE $emailsignup');
                }
             ?>

推荐阅读