Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysqli将数据插入到两个表中_Php_Mysqli - Fatal编程技术网

php mysqli将数据插入到两个表中

php mysqli将数据插入到两个表中,php,mysqli,Php,Mysqli,我试图在phpmysqli中向两个表中插入数据,但它在第一个表中插入数据,但在第二个表中也有其他列的地方没有插入任何内容 这是我的密码: $sql = "INSERT INTO socio (name, age, dob, gender, year, stgroup, stadd) VALUES ('$stnam', '$stage', '$stdob', '$stgen', '$styer', '$stGr', '$stadd')"; $sql1 = "INSERT INTO parta (n

我试图在phpmysqli中向两个表中插入数据,但它在第一个表中插入数据,但在第二个表中也有其他列的地方没有插入任何内容

这是我的密码:

$sql = "INSERT INTO socio (name, age, dob, gender, year, stgroup, stadd) VALUES ('$stnam', '$stage', '$stdob', '$stgen', '$styer', '$stGr', '$stadd')";
$sql1 = "INSERT INTO parta (name, stgroup, year) VALUES ('$stnam', '$stGr', '$styer')";

$result = mysqli_query($con, $sql);
$result = mysqli_query($con, $sql1);

上面的代码有什么错误吗?有什么建议吗?

试试这个。这可能是因为两个不同操作的变量名相同。我刚刚将第二个结果重命名为$result1

$sql = "INSERT INTO socio (name, age, dob, gender, year, stgroup, stadd) VALUES ('$stnam', '$stage', '$stdob', '$stgen', '$styer', '$stGr', '$stadd')";

$sql1 = "INSERT INTO parta (name, stgroup, year) VALUES ('$stnam', '$stGr', '$styer')";

$result = mysqli_query($con, $sql);
$result1 = mysqli_query($con, $sql1);

我真的看不出您的代码到底出了什么问题,可能是
parta
表中的某些列不应该为空。使用您提供的代码,很难判断,因为根本没有错误处理。您可能希望使用事务,然后使用适当的错误处理,并使用准备好的语句

尝试使用我为您准备的代码

<?php
$con = new mysqli("..."); // you should know this part already

$success = false;
try {

    $con->autocommit(FALSE);

    $con->begin_transaction();

    if ($sql = $con->prepare("INSERT INTO socio (name, age, dob, gender, year, stgroup, stadd) VALUES (?,?,?,?,?,?,?)")) {
        $sql->bind_param('sissss', $stnam, $stage, $stdob, $stgen, $styer, $stGr, $stadd);
        if (!$sql->execute()) {
            throw new Exception($sql->error);
        }

        if ($sql_two = $con->prepare("INSERT INTO parta (name, stgroup, year) VALUES (?,?,?)")) {
            $sql_two->bind_param('sss', $stnam, $stGr, $styer);
            if (!$sql_two->execute()) {
                throw new Exception($sql_two->error);
            }
        }
    }

    if ($con->commit()) {
        $success = true;
    } else {
        throw new Exception('Transaction commit failed...');
    }
}catch (Exception $ex) {
    try {
        // something went wrong,rollback and display message
        $con->rollback();
        echo $ex->getMessage();
    }
    catch (Exception $e) {
        echo $e->getMessage();
    }
}
$con->autocommit(TRUE);

if ($success) {
    echo "data successfully inserted";
}
?>


它是否给出任何错误?没有所有数据仅插入第一个表,而不是第二个表。请说明您的表结构。语法良好,是否检查了第二个请求的键拼写是否正确?使用准备好的语句。还要发布数据库模式。对第二个查询执行
$mysqli->error
。您将在这里找到变量名无效的原因。OP不检查或使用变量。您至少可以将OP的代码改进为准备好的语句。我已经尝试过这样做,但也不会这样做。嘿,您是对的,因为我没有提到其他字段值为null,这就是为什么不插入数据的原因。我把它改为空,现在可以用了。