簡體   English   中英

使用同一表中另一列的鍵更新mysql列

[英]Updating a mysql column with keys from another column from the same table

問題標題可能不是很具描述性。 那是因為我真的不知道怎么寫。 但是我的問題是,我有一個名為pagemeta表,該表具有三列idpage_propertyproperty_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM