缺少_在STACKOVERFLOW上有一个类型,我正在测试。
我正在尝试使用以下两个文件向我的数据库插入一个值:
添加记录:
<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();
?>
目前,它将field_capacity字段添加到没有错误的字段,但它总是向venue_name字段添加NULL。 capacity字段是INT,名称字段是VARCHAR。
我不知道它为什么这样做,它们与名字相同,我有双重和三重检查。有没有人有任何想法?
答案 0 :(得分:4)
您错过了_
name="venuename"
答案 1 :(得分:4)
您正在使用新查询重置$sql
而不先执行此操作。
您应该将两个查询合并为一个:
INSERT INTO Venues (venue_name, venue_capacity) VALUES ('$venue_name', '$venue_capacity');
您的表单还需要包含名为venue_name
的字段,而不是venuename
。
答案 2 :(得分:2)
你的意思是在同一张唱片上?
你必须在同一个语句中插入它们:
$sql = "INSERT INTO Venues (venue_name, venue_capacity) VALUES ('$venue_name', '$venue_capacity')";
请使用准备好的陈述。目前,您的代码极易受到SQL注入的影响,因为您只需从POST-Variables中读取值而不进行任何检查。
答案 3 :(得分:1)
试试这个:
添加记录:
<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());
}
?>
编辑(解释上述变化) 您输入的“venu_name”中有一个拼写错误,并且还使用了两个不同的SQL字符串(如果它们实际执行,则会将数据插入2个不同的字段,具体取决于您的表的配置)。第二个查询字符串覆盖了第一个查询字符串,因此从未执行过。
另外,一个非常重要的事情是您没有以任何方式清理数据!也许您打算使用JavaScript?如果你不检查你的输入,你将容易受到许多讨厌的攻击。</ p>
答案 4 :(得分:0)
第一件事:
你怎么能这样做:$venue_name = $_POST['venue_name']; ?
当您使用之前执行此操作时:<input type="text" name="venuename" /></p>
- &GT;您忘记了输入名称代码中的小_
。
第二件事:
如果你这样做,你将为$ sql设置一个新值而不执行第一个。
尝试改为:
$sql = "INSERT INTO Venues (venue_name, venue_capacity) VALUES ('$venue_name', '$venue_capacity')";