丢失的_是堆栈溢出的一个类型,我正在测试
我正试图使用以下两个文件将一个值插入到我的数据库中:
添加记录:
<form action="AddVenue.php" method="post" />
<p>Venue Name: <input type="text" name="venue_name" /></p>
<p>Venue Capacity: <input type="text" name="venue_capacity" /></p>
<input type="submit" value="Submit" />
</form>
AddVenue.php
<?php
require("dbconnection.php"); // Connect to Database
// Select Database
$db= 'database';
mysql_select_db($db) or die("Could not select database");
$venue_name = $_POST['venue_name'];
$venue_capacity = $_POST['venue_capacity'];
$sql = "INSERT INTO Venues (venue_name) VALUES ('$venue_name')";
$sql = "INSERT INTO Venues (venue_capacity) VALUES ('$venue_capacity')";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
mysql_close();
?>
目前,它在没有错误的情况下将添加到字段venue_cability,但是它总是在venue_name字段中添加NULL。容量字段是INT,名称字段是VARCHAR。
我不知道它为什么这么做,它们和名字是一样的,我已经仔细检查了一遍。有人有什么想法吗?
您正在使用一个新查询重置$sql
,而不首先执行它。
您应该将这两个查询合并为一个:
INSERT INTO Venues (venue_name, venue_capacity) VALUES ('$venue_name', '$venue_capacity');
您的表单还需要将字段命名为venue_name
,而不是venuename
。
您在name="venuename"
中错过了一个_
你是说在同一条记录上?
你必须将它们插入相同的语句中,如下所示:
$sql = "INSERT INTO Venues (venue_name, venue_capacity) VALUES ('$venue_name', '$venue_capacity')";
请使用事先准备好的报表。目前,您的代码极易受到SQL注入的影响,因为您只需从POST变量中读取值,而不需要进行任何检查。
试试这个:
添加记录:
<form action="AddVenue.php" method="post" />
<p>Venue Name: <input type="text" name="venue_name" /></p>
<p>Venue Capacity: <input type="text" name="venue_capacity" /></p>
<input type="submit" value="Submit" />
</form>
AddVenue.php
<?php
$venue_name = mysql_real_escape_string($_POST['venue_name']);
$venue_capacity = mysql_real_escape_string($_POST['venue_capacity']);
$sql = "INSERT INTO Venues (venue_name,venue_capacity) VALUES ('$venue_name','$venue_capacity')";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
?>
EDIT(解释上述更改)您在输入"venu_name"时出现了拼写错误,并且使用了两个不同的SQL字符串(如果它们实际执行,则会将数据插入两个不同字段,具体取决于表的配置)。第二个查询字符串覆盖了第一个,因此它从未被执行。
此外,一件非常重要的事情是,你没有以任何方式净化你的数据!也许你打算使用JavaScript?如果你不检查你的输入,你将很容易受到很多恶意攻击。
第一件事:
如何做到这一点:$venue_name = $_POST['venue_name']; ?
以前使用时执行此操作:<input type="text" name="venuename" /></p>
->您忘记了输入名称代码中的小_
。
第二件事:
如果您这样做的话,您将为$sql设置一个新值,而不执行第一个值。
试试看:
$sql = "INSERT INTO Venues (venue_name, venue_capacity) VALUES ('$venue_name', '$venue_capacity')";