私はSaaSプロジェクトを開発しようとしています。私は、新しい会社が登録するときに、すべての許可パラメータと許可グループを自動的に登録する必要があります。このコードは、企業、許可グループAdmin内のその会社のユーザー、クライアントの閲覧権限を持つ企業を含めて機能しています。PDOを使用して私のSaaSプロジェクトに多くの行を挿入するのに助けが必要
他の権限を同じ方法で追加する必要があります。作成したばかりの管理グループに追加して追加する必要があります。間違って
<?php
require_once 'config.php';
$name = isset($_POST['name']) ? $_POST['name'] : null;
$cnpj = isset($_POST['cnpj']) ? $_POST['cnpj'] : null;
$username = isset($_POST['username']) ? $_POST['username'] : null;
$email = isset($_POST['email']) ? $_POST['email'] : null;
$password = isset($_POST['password']) ? $_POST['password'] : null;
if (empty($name) || empty($cnpj) || empty($username) || empty($email) || empty($password)){
echo "Please fill all fields";
exit;
}
//Creates the new company
$PDO = db_connect();
$sql = "INSERT INTO companies (name, cnpj) VALUES(:name, :cnpj)";
$stmt = $PDO->prepare($sql);
$stmt->bindParam(':name', $name);
$stmt->bindParam(':cnpj', $cnpj);
$stmt->execute();
//creates permission param clients_view
$id_company = $PDO->lastInsertId();
$name = 'clients_view';
$sql2 = "INSERT INTO permission_params (id_company, name) VALUES (:id_company, :name)";
$stmt2 = $PDO->prepare($sql2);
$stmt2->bindParam(':id_company', $id_company);
$stmt2->bindParam(':name', $name);
$stmt2->execute();
//creates permission group Admin with param clients_view
$params = $PDO->lastInsertId();
$name = 'Admin';
$sql3 = "INSERT INTO permission_groups (id_company, name, params) VALUES (:id_company,:name, :params)";
$stmt3 = $PDO->prepare($sql3);
$stmt3->bindParam(':id_company', $id_company);
$stmt3->bindParam(':name', $name);
$stmt3->bindParam(':params', $params);
$stmt3->execute();
//create new user and adds to Admin group
$id_group = $PDO->lastInsertId();
$sql4 = "INSERT INTO users (username, email, password, id_group, id_company) "
. "VALUES (:username, :email, :password, :id_group, :id_company)";
$stmt4 = $PDO->prepare($sql4);
$stmt4->bindParam(':username', $username);
$stmt4->bindParam(':email', $email);
$stmt4->bindParam(':password',md5($password));
$stmt4->bindParam(':id_group', $id_group);
$stmt4->bindParam(':id_company', $id_company);
$stmt4->execute();
//creates permission clients_edit
// NOT WORKING
$name = 'clients_edit';
$sql5 = "INSERT INTO permission_params (name) VALUES (:name) WHERE id_company=:id_company";
$stmt5 = $PDO->prepare($sql5);
$stmt5->bindParam(':name', $name);
$stmt5->bindParam(':id_company', $id_company);
$stmt5->execute();
//Insert permission clients_view in group Admin
//NOT WORKING
$params = $PDO->lastInsertId();
$sql6 = "INSERT INTO permission_groups (params) VALUES (:params) WHERE name=:name AND id_company=:id_company";
$stmt6 = $PDO->prepare($sql6);
$stmt6->bindParam(':params', $params);
$stmt6->bindParam(':name', $name);
$stmt6->bindParam(':id_company', $id_company);
$stmt6->execute();
header('Location: index.php');
私は理解しているか、説明できるかどうかわかりません(英語は私の第1言語ではありません)。テーブルpermission_paramsに新しいIDを挿入したいが、id_company変数に関連していなければならないので、これは正しい会社に作成される。私は更新しようとしましたが、それは最初のものを削除し、2番目のものを作成しました。私は両方が必要です(最後に9個のパラメタになります)。テーブルid_paramsにはid、id_company、およびnameがあります。 – Fabi
英語も私の第1言語ではないので、私にも説明するのは簡単ではありません:Dあなたはこの方法で試してみることもできます。企業のテーブルに会社を追加してから、そのIDをpermission_paramsで使用します。$ sql5 = "INSERT INTO permission_params(name、company_id)VALUES(:name、company_id);そのテーブルからそれを取得してください。基本的には、あなたはそれを打ち返す必要があります。なぜなら、新しいインサートでいくつかのインサートをオーバーライドすることはできないからです。 – elvirt
ありがとうございました!私はid_groupにこれらの2つのパラメータを追加する必要がありますが、これと同じロジックを試しましたが、新しいIDを作成して助けになりません。テーブルpermission_groups id:5、id_group = 10、params = 1,2,3,4,5ここで1,2,3,4,5は私が作成したこれらのパラメータのIDです。 – Fabi