gpt4 book ai didi

php - 插入和更新到多个表,MySQL

转载 作者:可可西里 更新时间:2023-11-01 07:39:23 25 4
gpt4 key购买 nike

我有两张 table 。我想在提交表单时使用 parentcreate.php 作为操作,并使用该文件将几个变量插入到第一个表中,同时使用其中一个变量更新另一个表。我在网上搜索过,但我发现最接近的是插入和更新单个表,而不是两个不同的表。

提前致谢。

更新:

这是我到目前为止的代码,如您所见,它只是插入到第一个表中。

session_name('knine_settings_login');
session_set_cookie_params(1*1*1*15*60);
session_start();

mysql_connect('xxxx', 'xxxx', 'xxxx') or die(mysql_error());
mysql_select_db("xxxx") or die(mysql_error());

$ClassIDOne = mysql_real_escape_string($_POST["cidone"]);
$ClassIDTwo = mysql_real_escape_string($_POST["cidtwo"]);
$ClassIDThree = mysql_real_escape_string($_POST["cidthree"]);
$ClassIDFour = mysql_real_escape_string($_POST["cidfour"]);
$ClassIDFive = mysql_real_escape_string($_POST["cidfive"]);
$usr = $_SESSION["usr"];

mysql_query("SET NAMES 'utf8'") or die(mysql_error());
mysql_query("SET CHARACTER SET 'utf8'") or die(mysql_error());

$query="INSERT INTO knine_parent_db
SET usr = '$usr', ClassIDOne = '$ClassIDOne', ClassIDTwo = '$ClassIDTwo', ClassIDThree = '$ClassIDThree', ClassIDFour = '$ClassIDFour', ClassIDFive = '$ClassIDFive'";

我基本上想同时执行这两个查询:

$query="INSERT INTO knine_parent_db
SET usr = '$usr', ClassIDOne = '$ClassIDOne', ClassIDTwo = '$ClassIDTwo', ClassIDThree = '$ClassIDThree', ClassIDFour = '$ClassIDFour', ClassIDFive = '$ClassIDFive'";

$query="UPDATE knine_settings_login
SET ClassID = '$usr' WHERE usr ='$usr'";

最佳答案

您应该使用 PDO,并阅读 PHP 手册中的这个主题:Link to PDO::beginTransactionthis onethis one也是

您应该开始一个新事务,然后执行您的请求,检查是否没有错误,然后提交!

一旦您使用 PDO::commit,查询将返回到自动提交模式,然后您必须再次使用 PDO::beginTransaction 来关闭自动提交并在单个事务中执行多个查询。

如何在一个事务中执行多个请求。

在您的情况下,有一些代码可以帮助您:

$query1 = "INSERT INTO knine_parent_db
SET usr = :usr,
ClassIDOne = :ClassIDOne,
ClassIDTwo = :ClassIDTwo,
ClassIDThree = :ClassIDThree,
ClassIDFour = :ClassIDFour,
ClassIDFive = :ClassIDFive
";

$exec1 = [
':usr' => $_SESSION["usr"],
':ClassIDOne' => $_POST["cidone"],
':ClassIDTwo' => $_POST["cidtwo"],
':ClassIDThree' => $_POST["cidthree"],
':ClassIDFour' => $_POST["cidfour"],
':ClassIDFive' => $_POST["cidfive"],
];

$query2 = "UPDATE knine_settings_login
SET ClassID = :usr
WHERE usr = :usr
";

$exec2 = [':usr' => $_SESSION["usr"]];

$db_host = 'localhost';
$db_name = 'MyDatabase';
$db_user = 'user';
$db_pass = 'password';

$dsn = 'mysql:host='.$db_host.';dbname='.$db_name.';charset=utf8';

try
{
$PDO = new PDO($dsn, $db_user, $db_pass);
}
catch(PDOException $e)
{
// if dev mode
echo 'Database connection error : ' . $e->getMessage();

// if prod mode
//header('Location: /404.html');
//exit;
}

// begin of transaction
$PDO->beginTransaction();

$res1 = $PDO->prepare($query1);
$res2 = $PDO->prepare($query2);

if($res1->execute($exec1) && $res2->execute($exec2))
{
$PDO->commit();
}
else
{
$PDO->rollBack();
}

// end of transaction

关于php - 插入和更新到多个表,MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30017806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com