如何从一个“if”语句将信息写入两个数据库表?

时间:2017-07-10 10:57:33

标签: php mysql sql database

我希望将用户输入的信息发布到同一数据库中的两个不同的表中。但是我的代码似乎不起作用,它只写入我要求它写入的第二个表。为什么不写入第一张表呢?

if ($_POST['entereddetail']) {

$sql = "INSERT INTO firsttable (thedetail, date)
VALUES ('". $_POST['entereddetail'] ."', NOW())";

$sql = "INSERT INTO secondtable (thedetail, code, branch, user, date)
VALUES ('". $_POST['entereddetail'] ."','". $_POST['codedetail'] ."', '', '', NOW())";

if(mysqli_query($conn, $sql)){
echo "Records inserted successfully.";
} else{
echo "ERROR: Could not execute $sql. " . mysqli_error($link);
   }      
}

我知道我的代码可能会受到SQL注入。我现在只学习基础知识然后处理安全性,因为我只是SQL和数据库的新手。我的分支和用户字段也留空,因为我稍后会处理它们。

2 个答案:

答案 0 :(得分:2)

那是因为您正在覆盖$sql变量。

像这样调整你的代码:

$sql = "INSERT INTO firsttable (thedetail, date)
VALUES ('". $_POST['entereddetail'] ."', NOW());";

$sql .= "INSERT INTO secondtable (thedetail, code, branch, user, date)
VALUES ('". $_POST['entereddetail'] ."','". $_POST['codedetail'] ."', '', '', NOW());";

注意:如果仔细观察,您会在sql-statements中看到;.=将两个$sql变量合并为一个包含两个MySQL语句的字符串。

答案 1 :(得分:1)

你唯一执行第二个查询...

if ($_POST['entereddetail']) {

$sql = "INSERT INTO firsttable (thedetail, date)
            VALUES ('". $_POST['entereddetail'] ."', NOW())";
if ( mysqli_query($conn, $sql) ) {
    $sql = "INSERT INTO secondtable (thedetail, code, branch, user, date)
               VALUES ('". $_POST['entereddetail'] ."','". $_POST['codedetail'] ."', '', '', NOW())";

    if(mysqli_query($conn, $sql)){
        echo "Records inserted successfully.";
    } else{
       echo "ERROR: Could not execute $sql. " . mysqli_error($link);
   }      
}
else{
       echo "ERROR: Could not execute $sql. " . mysqli_error($link);
   }