簡體   English   中英

isset值始終返回1

[英]isset value always returns 1

我是PHP的新手。 我正在嘗試制作一個登錄和注銷網頁。 現在,我創建了一個將添加記錄的頁面。 我的代碼始終從我構建的表單中返回1,而不考慮表單中的值。 我的代碼-

<?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $alpha = isset($_GET["username"]);
    $beta = isset($_GET["password"]);
    $gama = isset($_GET["hobby"]);
    // Create connection
    $conn = mysqli_connect("localhost","root" ,"","member");

    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }

    $sql = "INSERT INTO data (username,password,hobby)
        VALUES ($alpha, $beta, $gama)";

    if ($conn->query($sql)=== TRUE) {
        echo $alpha."Your record is added into our database ";
    } else {
        echo $sql.$conn->error;
    }                                          
?>

這是我的表格:

<form action="add.php">
  <table> 
    <tr>
        <td>Username :</td>  <td><input type="text" name="username"></td>
    </tr>
    <tr>    
        <td>Password :</td>   <td><input type="text" name="username"></td>
    </tr>
    <tr>
        <td>Hobbies:</td>   <td><textarea name="hobby" id="hobby" cols="22" rows="7"></textarea></td>
    </tr>
    <tr>
        <td>    </td><td><input type="submit" name="submit"></td>
    </tr>

  </table>
</form>

發生這種情況是因為isset()返回了布爾值。

如果要直接打印username段,則可以:

if(isset($_GET["username"])) { 
    echo $_GET["username"];
}

因此,您應該了解變量$alpha$beta$gamma並不包含您期望的實際字符串,而是一個布爾值

詳情請參見: http : //php.net/manual/zh/function.isset.php

其原因是isset()函數檢查數組中的鍵是否已設置,因此不檢查值是否已設置。 就你而言 當您將表單發布到操作時,POST數組包含所有鍵,因此isset照常返回1。 我認為您需要看看php empty()函數。 或者,您可能要混合使用isset()和empty()。

http://php.net/manual/en/function.empty.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM