我几乎没有使用PHP的经验,现在我总是陷入困境,这真是令人沮丧。我有一个代码,似乎工作。从我的应用程序,我可以输入值并将它们放在我的PHP数据库中。事情是他只输入我的PHP代码中的最后一个值。所以应用程序放在一边:如果我只使用PHP代码在我的数据库中输入内容,他总是只取最后一个值。这是我的代码:
<?php
$DB_HostName = "localhost";
$DB_Name = "xxx";
$DB_User = "xxx";
$DB_Pass = "xxx";
$DB_Table = "contacts";
if (isset ($_GET["name"]))
$name = $_GET["name"];
else
$name = "Blade";
if (isset ($_GET["lastname"]))
$lastname = $_GET["lastname"];
else
$lastname = "Xcoder";
if (isset ($_GET["number"]))
$number = $_GET["number"];
else
$number = "111";
$con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die(mysql_error());
mysql_select_db($DB_Name,$con) or die(mysql_error());
$sql = "insert into $DB_Table (Firtname) values('$name');";
$sql = "insert into $DB_Table (Lastname) values('$lastname');";
$sql = "insert into $DB_Table (Number) values('$number');";
$res = mysql_query($sql,$con) or die(mysql_error());
mysql_close($con);
if ($res) {
echo "success";
}else{
echo "faild";
}// end else
?>
澄清:如果我只有firstname值,则将其输入正确的位置(firstname)。如果我有firstname和lastname值,他只输入lastname值,但不输入firstname值(仍然在正确的地方lastname)。数字也一样。如果我有名字,姓氏和数字,他只会将数字放在正确的位置而不是其他值。另外我只能做一次。如果我想进入另一个联系人,他总是说(重复输入'myentry'代表关键'PRIMARY')。
答案 0 :(得分:2)
因为你在接下来的2行上覆盖$ sql,所以最后的sql行是插入的。
如果你想让它们全部在同一行,你的sql是错误的。
$sql = "insert into $DB_Table (Firtname,lastname,number) values('$name','$lastname','$number');";
答案 1 :(得分:2)
您每次都会覆盖$sql
字符串。
也许您打算使用.=
将所有三个查询附加到一起。数据库表的结构是什么?
$sql = "insert into $DB_Table (Firtname) values('$name');";
$sql .= "insert into $DB_Table (Lastname) values('$lastname');";
$sql .= "insert into $DB_Table (Number) values('$number');";
答案 2 :(得分:2)
您正在覆盖$sql
语句。你必须执行它们。通过做:
$sql = "Insert INTO..."
你只需设置一个变量。您需要使用mysql_query()
验证每个查询。
我也猜你想要这样做:
$sql = "INSERT INTO $DB_TABLE (Firstname, Lastname, Number) VALUES ('$name', '$lastname', '$number')
最后,您要清理输入至关重要:
$name = mysql_real_escape_string($_GET["name"]);
由于这个原因,您可以避免SQL注入攻击。
答案 3 :(得分:2)
您覆盖了查询,有两种方法可以解决。 3个不同的变量,或1个变量,其中包含3个查询。我更喜欢第二个选项
$sql = "insert into $DB_Table (Firtname) values('$name');";
$sql .= "insert into $DB_Table (Lastname) values('$lastname');";
$sql .= "insert into $DB_Table (Number) values('$number');";
$res = mysql_query($sql,$con) or die(mysql_error());
或者如果它可以是表中的1行,因为它仍然是相同的表:
$sql = "insert into $DB_Table (Firtname,Lastname,Number) values('$name','$lastname','$number');";
$res = mysql_query($sql,$con) or die(mysql_error());
答案 4 :(得分:0)
这是因为您对所有3个查询使用相同的变量名称($sql
)。请改用$sql1
,$sql2
和$sql3
。另外,请为每个人拨打mysql_query
(但只有在您设置的情况下才会这样做。)
像这样:
$sql1 = "insert into $DB_Table (Firtname) values('$name');";
$sql2 = "insert into $DB_Table (Lastname) values('$lastname');";
$sql3 = "insert into $DB_Table (Number) values('$number');";
if (isset ($sql1))
{
$res1 = mysql_query($sql1,$con) or die(mysql_error());
}
if (isset ($sql2))
{
$res2 = mysql_query($sql2,$con) or die(mysql_error());
}
if (isset ($sql3))
{
$res3 = mysql_query($sql3,$con) or die(mysql_error());
}