3 回答

TA貢獻1943條經(jīng)驗 獲得超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條經(jīng)驗 獲得超13個贊
你所做的只是替換字符串,但你實際插入數(shù)據(jù)庫的執(zhí)行是在循環(huán)之后寫入的,這就是為什么它只插入最后一個復(fù)選框。$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);
另外,請注意,您插入(循環(huán))的方式非常慢,因為它正在執(zhí)行相當(dāng)多的查詢。應(yīng)改用批量插入。
警告:正如達爾曼在評論中提到的
您對 SQL 注入持開放態(tài)度,應(yīng)使用參數(shù)化的預(yù)準(zhǔn)備語句,而不是手動構(gòu)建查詢。它們由美通或麥?zhǔn)锨蹇铺峁S肋h不要相信任何類型的輸入!即使您的查詢僅由受信任的用戶執(zhí)行,您仍然面臨損壞數(shù)據(jù)的風(fēng)險。逃避是不夠的!

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