Я застрял при обновлении таблицы значением из другой таблицы.Допустим, у меня есть следующие таблицы:
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
, но безуспешно.Как я могу обновить внешний ключ таблицы Persons, основываясь на значении во вводе с name = "level"?