我有一個查詢更新給定記錄的布爾值,然後插入該記錄到另一個表(取決於所執行的操作)使用select子查詢。 select子查詢工作正常,但我怎樣才能添加一個額外的變量到要插入的查詢的末尾?我之所以需要這樣做是因爲select子查詢不包含此數據,並且此數據將只存儲在原始記錄「複製」到的兩個表中的一箇中。插入值與一個選擇子查詢和一個額外的變量
$id = $_POST['id'];
$action = $_POST['action'];
$reason = $_POST['reason'];
if($action == "approve") {
$statement = $db->prepare("UPDATE waiting SET wait = :status WHERE id = :id");
$statement->bindValue(':status', 0);
$statement->bindParam(':id', $id);
$statement->execute();
$statement = $db->prepare("INSERT INTO approved (fname, lname, student_id, email, type) SELECT fname, lname, student_id, email, type FROM waiting WHERE id = :id");
$statement->bindParam(':id', $id);
$statement->execute();
$lastId = $db->lastInsertId();
$statement = $db->prepare("UPDATE approved SET reason = :reason WHERE id = $lastId");
$statement->bindParam(':reason', $reason);
$statement->execute();
}
基本上我想結合使用select子查詢的插入查詢和更新原因到一個查詢的更新查詢。這在語法上可能嗎?
編輯:我應該更清楚,並說明傳遞的原因是由用戶輸入到文本字段的字符串。這不是表格中的列或任何其他數據。
感謝
不會,基本上可以告訴查詢來選擇不管它是我綁定:原因?我的主要問題是,從中複製記錄的原始表格根本沒有「原因」字段(這也意味着它沒有相同數量的列) – Aaron
從原始代碼中我猜原因是由用戶提供的('$ reason = $ _POST ['reason'];'),這就是應該插入數據庫的內容。澄清,如果我錯了。 – SWeko
是的,這是正確的。對不起,我很快就跳起來,假設你發佈的內容不是我想要做的。你的查詢實際上工作完美。謝謝! – Aaron