PHP数据库仅输入最后一个值

时间:2012-02-07 18:00:56

标签: php ios database xcode

我几乎没有使用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')。

5 个答案:

答案 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());
}