[英]Sign in form, select name option value
我目前設置了三個表。 我希望當有人登錄時,他們在選擇下拉列表中選擇 1 個選項,然后進入該單獨的數據庫。
例如最喜歡的顏色
<select name="color">
<option value="Red">Red</option>
<option value="Blue">Blue</option>
<option value="White">White</option>
</select>
所有紅色被選中,進入紅色數據庫,所有藍色進入藍色數據庫等等。
謝謝
您要做的是按特定值分隔數據。 這是很正常的事情,但你試圖做的一切都是錯誤的。 擁有可變表名幾乎從來都不是一個很好的理由——相反,您應該使用列來分隔這些數據。
處理這種情況的更好方法是創建一個表(EG colors
,帶有一列color
,您可以將其分配給選定的變量。
例如:
$query = "INSERT INTO colors (color) VALUES (?)";
其中問號是所討論的變量(在准備好的聲明中)。
這樣,您的所有變量都在一個表中,但仍由用戶選擇的顏色分隔,並且可以按此方式排序。
如果您想忽略我上面的多次警告,即您正在以錯誤的方式進行此操作(畢竟您是自己的人,可以為自己做出決定),那么您可以按照您的要求進行操作(但再次,我真的真的真的真的不推薦這種方法)。
如果您這樣做,您應該檢查以確保所選的選項與可能的選擇列表匹配:
$possible = ["Red", "Blue", "White"];
if(in_array($_POST['color'], $possible)) {
$query = "INSERT INTO {$_POST['color']} ...";
}
這樣做將防止通過連接到字符串中的變量進行 SQL 注入。
如果直接插入 users 變量而不先檢查它,用戶可以在客戶端更改下拉列表的實際值,這很容易使您的應用程序處於危險之中。
注意:我不建議這樣做 - 它更難維護,而且這不是做這種事情的正確方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.