我正在尝试将我的脚本从MySQL更新到MySQLI,但我遇到了一些问题。 问题是,每次我重新加载我的网站时,它都会在数据库中添加一个新行,因为这就是它所告诉的内容。 我的脚本看起来像这样:
<?php
$con=mysqli_connect("localhost","USERNAME","PASSWORD","test");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO test (name, content)
VALUES
('$_POST[name]','$_POST[content]')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
<html>
<body>
<form action="mysqli.php" method="post">
Name: <input type="text" name="name">
Content: <input type="text" name="content">
<input type="submit">
</form>
</body>
</html>
感谢您的帮助:)
答案 0 :(得分:2)
添加对POST数据的检查。一个非常简单的可能是:
if( $_POST['name'] && $_POST['content'] ){
$sql="INSERT INTO test (name, content)
VALUES
('$_POST[name]','$_POST[content]')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
}
通过添加此检查,只有在发送表单数据时才会执行查询。
答案 1 :(得分:0)
通常当我的表单和可执行函数在同一页面上时,我会执行andrewsi建议并检查我的变量是否用isset()设置但是我还在表单中包含一个隐藏字段,类似于< / p>
<input type="hidden" name="clicked" value="clicked" />
并在页面加载时检查此变量:
if(isset($_POST["clicked"]) && $_POST["clicked"] == "clicked"))
{...}
它让我对页面加载有了更多的控制,以防表单字段中存在一些挥之不去的值等。
答案 2 :(得分:0)
在发布值
时添加支票<input type="Submit" name="Add">
然后在PHP代码中检查是否单击了提交按钮,然后输入记录
if(isset($_POST['Add'])) // checking if Submit button was clicked
{
$sql="INSERT INTO test (name, content) VALUES ('$_POST[name]','$_POST[content]')";
}
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
}