我有一个奇怪的问题。我正在学习准备好的陈述。我创建了一个包含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>
答案 0 :(得分:4)
更改
$nama = isset($_POST['nama']);
为:
$nama = $_POST['nama'];
isset
会返回true
或false
,具体取决于是否设置了变量,以便您将$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();
}