我试图将数据插入到php mysqli中的2个表中,但它会在第一个表中插入数据,但是在第二个表中没有插入任何其他列的内容。
这是我的代码:
$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);
上面的代码有什么问题吗?有什么建议吗?
答案 0 :(得分:1)
我无法确切地看到您的代码出现了什么问题,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";
}
?>
答案 1 :(得分:-3)
试试这个。这可能是因为您对两个不同的操作具有相同的变量名称。我只是将第二个结果重命名为$ 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);