2014-12-31 102 views
0

我的代碼正在工作,但如果我從表單中選擇了兩個值,然後只有單個增值數據庫,則存在問題。哪裏出問題了。複選框值帶有單個值

<?php 
$con = mysqli_connect('localhost', 'root', '12345', 'fruit'); 
if ($_SERVER['REQUEST_METHOD'] != 'POST' && !isset($_POST['submit'])) { 
    echo '<form action="" method="post"> 
    <input type="checkbox" name="fruits[]" value="Apple" />APPLE<br /> 
      <input type="checkbox" name="fruits[]" value = "Lemon" />LEMON<br /> 
      <input type="submit" name="submit" value="POST"> 
</form>'; 
}elseif ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['submit'])){ 
    $fruit = $_POST['fruits']; 
    foreach ($fruit as $fruits){ 
     $fruits = mysqli_real_escape_string($con, strip_tags($fruits)); 
    } 
    $sql_add = mysqli_query($con, "INSERT INTO fruit (name) VALUES ('$fruits')"); 
    if (mysqli_affected_rows($con) == 1) { 
     echo "Ok not problem."; 
    }else { 
     echo "There are some problem. Please submit your choice again."; 
    } 
} 

回答

1

末在迴路中的INSERT語句後循環,

foreach ($fruit as $fruits){ 
    $fruits = mysqli_real_escape_string($con, strip_tags($fruits)); 
    $sql_add = mysqli_query($con, "INSERT INTO fruit (name) VALUES ('$fruits')"); 
} 
+1

SQL請求?你是認真的嗎? – Fabien

+1

這解決了這個問題,但確實會造成一些開銷。如果你檢查5個水果,你將有5倍的往返MySQL和5倍的語句解析。此插入現在不是原子的。如果你像這樣一次插入一行,並且你已經使用mysqli,那麼至少使用一個準備好的語句。但是否這是不好的一個意見。答案沒有錯。 – GolezTrol

+0

@GolezTrol,請發送更好的選擇 –