当我插入数据时,它会显示' 1'在数据库中 - php,sql

时间:2015-12-24 07:12:20

标签: php sql mysqli

我有一个奇怪的问题。我正在学习准备好的陈述。我创建了一个包含1个字段nama的简单页面和一个包含列nama的表格。我只是想看看数据进入。当我按下提交按钮时,表格中有数据,但每次我插入数据时都会显示1。所有行都显示相同的数字。任何人都可以指导我完成这个吗?

<?php

/**
 * Start the session.
 */
session_start();

require 'connect-test.php';

$nama= isset($_POST['nama']);

$stmt=$conn->prepare("INSERT INTO test (nama) VALUES (?)");
$stmt->bind_param("s", $nama);
$stmt->execute();
if (!$stmt)
{ printf("Errormessage: %s\n", $mysqli->error);}    

$stmt->close();
$conn->close();

?> 

<html>
<body>  
<form name="form2" method="post" action="test-deletenanti.php">
  <p>Name :
    <input type="text" name="nama" id="nama">
  </p>
  <p>
    <input type="submit" name="button" id="button" value="Submit">
  </p>  
</form>       
</body>
</html>

2 个答案:

答案 0 :(得分:4)

更改

$nama = isset($_POST['nama']);

为:

$nama = $_POST['nama'];

isset会返回truefalse,具体取决于是否设置了变量,以便您将$nama放入的内容,而不是输入的实际值。

您应该在isset()语句中使用if围绕整个事情:

if (isset($_POST['nama'])) {
    $nama = $_POST['nama'];

    // rest of code to insert into DB
}

答案 1 :(得分:1)

<强> isset()

  

如果var存在并且其值不是NULL,则返回TRUE,FALSE   否则。

您的条件为TRUE并将其设为1

$nama= isset($_POST['nama']);

只需更改为

if (isset($_POST['nama'])) {
    $nama = $_POST['nama'];

        $stmt = $conn->prepare("INSERT INTO test (nama) VALUES (?)");
        $stmt->bind_param("s", $nama);
        $stmt->execute();
        if (!$stmt) {
            printf("Errormessage: %s\n", $mysqli->error);
        }
        $stmt->close();
        $conn->close();
    }