簡體   English   中英

插入並更新到多個表中,MySQL

[英]Insert and update into multiple tables, MySQL

我有兩張桌子。 我想在提交表單時使用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手冊中閱讀此主題: 鏈接到PDO :: beginTransaction以及該一個這個

您應該開始一個新事務,然后執行您的請求,檢查是否沒有錯誤,然后提交!

一旦使用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

嘗試分開對我有用的陳述

//  insert query execution
$sql = "INSERT INTO vendors (vendorId ,vendor_name, address, email, phone, category) VALUES
('$vendorId', '$vendor_name', '$address', '$email',
 '$phone', '$category')
";

if ($mysqli - > query($sql) === true) {
  echo "<script>alert('You have successfully registered');</script>";
} else {
  echo "<script>alert('could not create shop something went wrong  ');  <
  /script>";  
  $mysqli - > error;
}

//  update query execution
$sql = "UPDATE users SET userType = 'vendor', vendor_name='$vendor_name'  
WHERE id = '".$_SESSION['
id ']."'
";

if ($mysqli - > query($sql) === true) {
  echo "<script>alert('update successfull ');</script>";
  header("location:my-account.php");
} else {
  echo "<script>alert('could not create shop something went wrong  ');  <
  /script>";  $mysqli->error;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM