php mysqli将数据插入到两个表中
我试图在phpmysqli中向两个表中插入数据,但它在第一个表中插入数据,但在第二个表中也有其他列的地方没有插入任何内容 这是我的密码: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
$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,这就是为什么不插入数据的原因。我把它改为空,现在可以用了。