我想在我的数据库表中插入多个变量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和状态字段中插入,所有其他字段都为空,即使我在这些输入中提供了一些输入。
我不知道如何解决这个问题。
注意:此处Id
为integer
类型,status
为tinyint
类型,其他所有字段均为varchar
类型。
答案 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