【解決方法】PHP 警告: 未定義の配列キー "ファーストネーム"

プログラミングQA


PHP 8 を使用しており、fetch メソッドを使用してデータベースからデータを取得しようとしています。 しかし、何も機能していないようです。

PHP
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  
  $email = 
  $password =
  $row = '';

  if (empty($_POST['email']) || empty($_POST['password']))
   {
    echo "<span>All fileds are required</span>";
  } 

  else 
  {

    $email = $_POST['email'];
    $password = $_POST['password'];

    $query = " SELECT email FROM register_user WHERE email =:email";
    $statement = $pdo->prepare($query);
    $statement->bindParam(':email', $email, PDO::PARAM_STR);

    if($statement->execute())
     {
      $row = $statement->fetch(PDO::FETCH_ASSOC);
       $firstName = $row['first_name'] ?? ' ';
       echo $firstName;
    } 
    else 
    {
       echo "failed";
    }
   
}
}
?>

htmlコード

HTML
 <section class="form-container">
  <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
    <div class="form-filed">
      <label for="email">Email:</label>
      <input type="email" name="email" id="email" placeholder="Enter email">
    </div>
    <div class="form-filed">
      <label for="password">Password:</label>
      <input type="password" name="password" id="password" placeholder="Enter password">
    </div>
    <input type="submit" value="Login" class="btn">
  </form>
</section>

私が試したこと:

PHP
$firstName = $row['first_name'];
echo $firstName;

解決策 1

あなたのコードを見てください:

$query = " SELECT email FROM register_user WHERE email =:email";

これは、”email” という名前の 1 つの列 (できれば 1 つの行) を返します。

したがって、そのデータセットから他の列を要求することはできません!

おそらく、代わりに「first_name」列を取得したいですか? (または、複数の列である可能性が高くなります。)

コメント

タイトルとURLをコピーしました