これは重複する質問ではありません。前の質問はPDOとは関係ありません。別のテーブルからmysql pdoのフィールドを更新する方法
USERS
-------------------------------------
employeeid | name | saving | salary
-------------------------------------
12 | Bob | 100 | 1000
23 | Joe | 50 | 800
USERS table
employeeid
name
saving
salary
と::私はMySQLで2つのテーブルを持っている
EMPLOYEE
-----------------------------------
id | managerid | workerid
-----------------------------------
1 | 12 | 23
EMPLOYEE table
id
managerid FOREIGN KEY
workerid FOREIGN KEY
1-(管理者と労働者の双方が従業員です)(+ $ 10を言う)workeridのための貯蓄フィールドを更新するために、フィールド給与によって更新する必要 - $ 10
2-入力変数はname
としてPHPフォームから来るので、論理フローは次のとおり
name > find employeeid (id) from USERS > find managerid (id2) from EMPLOYEE > find employeeid (id3) from USERS > update saving and salary
そのSQL文は、別途のように書くことができます。
id = SELECT employeeid FROM USERS WHERE name = $name; //find id of employee in USERS
id2 = SELECT managerid FROM EMPLOYEE WHERE workerid = id; //find id of worker in EMPLOYEE
UPDATE USERS SET saving = saving + 10, salary = salary -10 WHERE employeeid = id2;
は(PDO形式で)1でこれらの3文を行うことが可能です。 (PHPで)上記のmSQLのPDO形式に:
$sql = "SELECT employeeid FROM USERS WHERE name=:namepara";
$sttm = prepare($sql);
$sttm->execute(array(":namepara"=>$name));
$row=$sttm->fetch(PDO::FETCH_ASSOC);
$sql2 = "SELECT managerid FROM EMPOYEE WHERE workerid=:idpara";
$sttm2 = prepare($sql2);
$sttm2->execute(array(":idpara"=>$row['employeeid']));
$row2=$sttm2->fetch(PDO::FETCH_ASSOC);
$sql3 = "UPDATE USERS SET saving = saving + 10, salary = salary - 10 WHERE
employeeid=:id2para";
$sttm3 = prepare($sql3);
$sttm3->execute(array(":id2para"=>$row2['managerid']));
$row3=$sttm3->fetch(PDO::FETCH_ASSOC);
任意の助けいただければ幸いです! 10 - あなたのクエリが USERS INNERが USERS.employeeid = EMPLOYEE.managerid SET 省=貯蓄+ 10 、給与=給与に EMPLOYEE を登録しよUPDATE `のようなものでなければなりません
WHERE USERS.name = 'name'' –
ありがとうございます。提供されたソリューションはPDOではありません。私は複数のINNER JOINを行うことができましたが、PDOを使うとややこしい、または私はそれをよく知りません。 – Tempo