[英]MySQL update column and return value from another column in the same table
[英]Updating a mysql column with keys from another column from the same table
問題標題可能不是很具描述性。 那是因為我真的不知道怎么寫。 但是我的問題是,我有一個名為pagemeta
表,該表具有三列id
, page_property
和property_value
,這是這樣的:
-----------------------------------
id | page_property | property_value|
------------------------------------
1 | telephone | 445854541 |
2 | email | c@gmail.com |
3 | icon | img/1.jpg |
到現在為止還挺好。 現在,我有一個html表單,該表單將發布請求發送到php頁面。 $_POST
數組鍵以page_property
列中的字段命名,例如:電話,電子郵件和圖標。 $_POST
數組值是從表單的輸入字段中設置的。 最后,我有一個帶有這些值的$ _POST數組:
telephone=>8988989
email=>b@gmail.com
icon=> img/2.jpg
問題從我嘗試更新pagemeta
表的地方開始。 我不知道如何編寫UPDATE
查詢,其中property_value
列中的字段使用$_POST
數組中的相應鍵進行更新。 這意味着應與page_property
列中的字段值相關地更新property_value
中的字段。 很抱歉要求如此不清楚和復雜。 我真的不知道該怎么解釋。 任何編輯將受到歡迎,任何答案將是一個很大的幫助。 謝謝,我到處搜索,但是找不到任何答案。
使用這種數據庫結構,您將需要3個查詢來更新3個值,我認為這是非常糟糕的...
UPDATE pagemeta SET property_value = $_POST['telephone'] WHERE page_property = 'telephone' UPDATE pagemeta SET property_value = $_POST['email'] WHERE page_property = 'email' UPDATE pagemeta SET property_value = $_POST['icon'] WHERE page_property = 'icon'
您可能需要重新考慮數據庫結構,我不確定您會從中獲得什么收益,而不是正常運行並創建一列電話,另一列電子郵件,最后一個圖標
PD:請使用准備好的聲明
通常,當您創建HTML表單時,會添加一個隱藏字段,其中包含您要編輯的行的ID。
<form>
<input type="hidden" name="id" value="1"> <!-- id of record being edited -->
<input type="tel" name="telephone" value="8988989">
<input type="email" name="email" value="b@gmail.com">
<input type="text" name="icon" value="img/2.jpg">
</form>
您的$ POST數組為:
id=>1
telephone=>8988989
email=>b@gmail.com
icon=> img/2.jpg
在沒有ID的情況下,您將假定您希望創建一個新記錄,即在表中插入另一行。
您的表布局也將更改為一行包含所有內容的布局。
如果獲得ID,則UPDATE將為:
UPDATE pagemeta SET
telephone=$_POST[telephone],
email=$_POST[email],
icon=$+POST[icon]
WHERE id=$_POST[id]
注意 :以上SQL僅用於說明目的。 實際上,您必須驗證表單輸入,以避免SQL注入攻擊
好。 您正坐在PHP IDE中,查看一些全局變量,然后思考“如何將它們粉碎到數據庫中?”
任何體面的IDE都已經警告您有關使用Superglobal檢索數據的信息。 IDE不會告訴您的是,如果您將所做的工作發布到Web上,則會被利用。
聽起來您就在旅途的開始,所以請按照您的要求回答問題:
$conn = new mysqli("servername", "username", "password", "dbname");
foreach($_POST as $key => $value) {
$sql = "UPDATE pagemeta SET property_value = $value WHERE page_property = $key"
$conn->query($sql)
}
$conn->close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.