如何通过sql在数据库表中插入多个变量?

时间:2014-02-25 10:59:45

标签: php mysql sql sql-server

我想在我的数据库表中插入多个变量VALUES。这是我的代码

include 'database_connect.php';

$namef=  $_post["fnam"];
$lnamel= $_post["lnam"];
$addres= $_post["addres"];
$mail= $_post["email"];
$countr= $_post["countr"];
$db= $_post["do"];
$m= $_post["m"];
$pasword= $_post["pas"];

$insertSql= "INSERT INTO abcd(Id, First_name, Last_name, Address, Email, Country, Date_of_birth, Mobile_number, Password, Status) 
VALUES(NULL,'$namef', '$namel', '$addres', '$mail', '$countr', '$db', '$m', '$pasword', '0')";

if(mysql_query($insertSql))
    header("location: login_success.php");
else
    header("location: wrong_inf.php");

此处仅在Id和状态字段中插入,所有其他字段都为空,即使我在这些输入中提供了一些输入。

我不知道如何解决这个问题。

注意:此处Idinteger类型,statustinyint类型,其他所有字段均为varchar类型。

5 个答案:

答案 0 :(得分:2)

要使用post变量,您需要使用

$_POST['fieldname']

而不是

$_post["fieldname"]

因为$_POST数组在php

中区分大小写

还要始终使用mysql_error()和继续

检查查询是否正确执行
$query = mysql_query($insertSql) or die(mysql_error());

if($query)
  {
   // updated
  }
else
   {
    // not updated
   }

最后我建议你不要使用mysql_*函数并开始使用mysqli_*函数或PDO

答案 1 :(得分:1)

PHP变量是区分大小写的

$namef=$_POST["fnam"];
$lnamel=$_POST["lnam"];

... ETC

答案 2 :(得分:1)

$_REQUEST$_POST而不是$_post

在调用header("..");之后也使用exit并在sql执行之前转义以防止注入

您的修改后的代码是

include 'database_connect.php';

$namef=  $_REQUEST["fnam"];
$lnamel= $_REQUEST["lnam"];
$addres= $_REQUEST["addres"];
$mail= $_REQUEST["email"];
$countr= $_REQUEST["countr"];
$db= $_REQUEST["do"];
$m= $_REQUEST["m"];
$pasword= $_REQUEST["pas"];

$namef = mysql_real_escape_string($namef);
$lnamel = mysql_real_escape_string($lnamel);
$addres = mysql_real_escape_string($addres);
$mail= mysql_real_escape_string($mail);
$countr = mysql_real_escape_string($countr);
$db = mysql_real_escape_string($db);
$m = mysql_real_escape_string($m);
$pasword = mysql_real_escape_string($pasword);

$insertSql= "INSERT INTO abcd(Id, First_name, Last_name, Address, Email, Country, Date_of_birth, Mobile_number, Password, Status) 
VALUES(NULL,'$namef', '$namel', '$addres', '$mail', '$countr', '$db', '$m', '$pasword', '0')";

if(mysql_query($insertSql))
{
    header("location: login_success.php");
    exit;
}
else
{
    header("location: wrong_inf.php");
    exit;
}

注意: mysql_*现已弃用用户mysqli_*PDO

答案 3 :(得分:0)

您可以在构建SQL字符串后开始编写SQL字符串,以查看是否正确添加了值:

echo $insertSql;

如果其中有空白项目,请检查您的$_POST数据是否正确传递:

var_dump($_POST);

(正如克里希纳指出的那样,当你应该使用大写的$ _POST时,你正在使用小写的$ _post。)

此外,虽然您没有询问它,但是您不应该直接从$_POST数组将数据写入数据库而不首先清理它。最好的办法是使用PDO,但是如果您打算使用mysql_*函数,那么对要写入数据库的每个项目使用mysql_real_escape_string,如下所示:

$sql = 'INSERT INTO `table` (`column`) VALUES ("' . mysql_real_escape_string($_POST['item']) . '")';

答案 4 :(得分:0)

其中一个错误是未定义变量是$namel在sql中将其替换为$lnamel