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

Posted

技术标签:

【中文标题】如何通过sql在数据库表中插入多个变量?【英文标题】:how to insert multiple variable in databse table through sql? 【发布时间】:2014-02-25 10:59:45 【问题描述】:

我想在我的数据库表中插入多个变量为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 类型。

【问题讨论】:

试试 print_r($_POST) ,它说了什么? 尝试将$_post[""]更改为$_POST[''] 您将 ID 设置为 NULL 似乎很奇怪。这真的是你想做的吗? 请务必仔细阅读并理解这一点:***.com/questions/60174/… 这将有助于防止您的数据库被黑客入侵。 【参考方案1】:

要使用 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

【讨论】:

【参考方案2】:

PHP 变量区分大小写

试试

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

等....

【讨论】:

【参考方案3】:

$_REQUEST$_POST而不是$_post

在调用header("..");后也使用exit,在sql执行前使用escape来防止注入

你修改后的代码是

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

【讨论】:

【参考方案4】:

您可以先在构建 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']) . '")';

【讨论】:

【参考方案5】:

其中一个错误是未定义变量是 sql 中的$namel

$lnamel替换它

【讨论】:

以上是关于如何通过sql在数据库表中插入多个变量?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 从包含表名、列名和值列映射的数据表中将数据插入到多个表中,可以在源中更改

如何在一个表中插入多个外键?

sql中如何使一列中的多个重复数据只显示一次, 求大神指导,使得图中的班简名重复的只显示一次。

SQL从不同数据库中的多个表中插入数据

如何使用 PHP、SQL 和 Microsoft Access 将另一个表中的 select max 函数和用户输入的变量插入表中?

解析 JSON 数据并插入到 SQL Server 中的多个表中