3 回答

TA貢獻1943條經驗 獲得超7個贊
您也可以借此機會糾正 SQL 注入漏洞。
$stmt = $conn->prepare('INSERT INTO draftPick (user_id, athlete_id) VALUES ('77', ? )');
$stmt->bind_param('i', $value);
foreach($checkboxes as $value) {
$stmt->execute();
}

TA貢獻1836條經驗 獲得超13個贊
你所做的只是替換字符串,但你實際插入數據庫的執行是在循環之后寫入的,這就是為什么它只插入最后一個復選框。$sql
試試這個:
$checkboxes = isset($_POST['athlete']) ? $_POST['athlete'] : array();
foreach($checkboxes as $value) {
$sql = "INSERT INTO draftPick(user_id, athlete_id)VALUES('77', '$value' )";
if(mysqli_query($conn,$sql)) {
echo 'Data added sucessfully';
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
}
mysqli_close($conn);
另外,請注意,您插入(循環)的方式非常慢,因為它正在執行相當多的查詢。應改用批量插入。
警告:正如達爾曼在評論中提到的
您對 SQL 注入持開放態度,應使用參數化的預準備語句,而不是手動構建查詢。它們由美通或麥氏清科提供。永遠不要相信任何類型的輸入!即使您的查詢僅由受信任的用戶執行,您仍然面臨損壞數據的風險。逃避是不夠的!

TA貢獻1875條經驗 獲得超5個贊
當您設置 :
$sql = "INSERT INTO draftPick(user_id, athlete_id)VALUES('77', '$value' )";
它只是一個字符串 bieng 設置為$sql可瓦拉,其中
mysqli_query($conn,$sql)
是執行 SQL 查詢以將數據插入到表中,因此移動
foreach($checkboxes as $value) {
$sql = "INSERT INTO draftPick(user_id, athlete_id)VALUES('77', '$value' )";
mysqli_query($conn,$sql);
}
- 3 回答
- 0 關注
- 200 瀏覽
添加回答
舉報