繁体   English   中英

用PHP更新外键值

[英]Update foreign key values with PHP

我一直在用另一个表中的值更新表。 可以说我有下表:

Persons table
PersonId (pk), 
Name, 
StateId (fk)

States table 
StateId (pk), 
Level

我在两个输入中显示“名称”及其对应的“级别”,让此人使用以下代码:

 $sel = "SELECT Name, Level FROM Persons P JOIN States S ON P.StateID = S.StateID WHERE PersonID = :pid"; $stm = $pdo->prepare($sel); $stm->execute(array(":pid" => $_GET['personId'])); // personId coming from calling page $person = $stm->fetch(PDO::FETCH_ASSOC); 

人员显示在以下输入中(未显示带有personId的隐藏输入)

 <input type="text" name="person" value=" <?php echo($person['Name']) ?>"> <input type="text" name="level" value=" <?php echo($person['Level']) ?>"> 

更新时,我运行以下查询

 $update = "UPDATE Persons SET Name = :name, Level = :level WHERE PersonID = :pid"; // Level = :level wont work $stm = $pdo->prepare($update); $stm->execute(array(':pid' => $_POST['personId'], ':name' => $_POST['name'], ':level' => $_POST['level'])); // again, not correct 

Level = :level显然是错误的,我试图用SELECT ...WHERE Level = :level的结果替换它SELECT ...WHERE Level = :level但没有成功。 如何基于输入中具有name =“ level”的值更新Persons表的外键?

我找到了一个解决方案,原来是SQL问题:我更改了$update字符串以选择StateID ,其中Level = StateID <input type="text" name="level"...>标记所包含的内容。

$update = "UPDATE Persons SET Name = :name, StateID = (SELECT StateID FROM States WHERE Level = :level) WHERE PersonID = :pid";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM