2014-06-14 44 views
-2

我在數據庫中有一個表,當想要拒絕或接受某人的應用程序時,我只需選擇單選按鈕並將值發送到數據庫中的表。將選定的電臺值插入到表中的特定ID - php mysql

但問題是,該值分配給新行而不是特定的學生ID。這是我的桌子,你看到有添加2個新行獲得另一個ID。這裏是我的代碼和表:

<?php 

    $status = $_POST["status"]; 
    $connect = mysqli_connect("localhost","root","admin","form"); 
    if (!$connect) { 
      die('Connect error:'. mysqli_error()); 
     } 
     $result = mysqli_query($connect, "INSERT INTO students (status) VALUES ('$status') "); 


?> 

idstudents |fname | lname| age | nationality | status 
    ..................................................... 
     1  |Tom | Bern | 23 | American | 
     2  |Lily | Wayne| 24 | British  | 
     3  |NULL | NULL | NULL| NULL  | accepted 
+3

您需要更新聲明而非插入,當您提交表單時,您需要一個更新,其中包含您的表單中的狀態和ID – user1978142

+0

您還需要提供其他colums值! – ddw147

回答

0

INSERT聲明是爲了......插入新行。您需要的是UPDATE聲明,將值應用於某個行,您將使用它們的idstudents來選擇該行。

$status = $_POST["status"]; 
$studentid = $_POST["studentid"]; 

... 

$result = mysqli_query($connect, "UPDATE students SET status = '$status' WHERE idstudents = $studentid;"); 

在一個側面說明,使用$ _ POST(或其他)由用戶輸入的值時,如果此服務會被其他人使用,你可能想之前它們進行消毒一定要加倍小心插入它們,以避免潛在的安全漏洞。

+0

當我喜歡你的代碼時,它不會在表格中添加任何內容,但是當我將特定的ID代替$ studentid時,它就可以工作。 – user3615781

+0

@ user3615781您需要以HTML格式發佈學生ID以及狀態。例如'' – blex

0

爲了更新,你需要一個UPDATE語句,不要忘記在表單上添加一個student_id。考慮這個例子:(相同頁面進程)。

<?php 

$students = array(); 
$link = new mysqli('localhost', 'username', 'password', 'database'); 

if(isset($_POST['submit'], $_POST['status'])) { 
    $status = $_POST['status']; 
    foreach($status as $student_id => $status_value) { 
     $stmt = $link->prepare('UPDATE students SET status = ? WHERE idstudents = ?'); 
     $stmt->bind_param('ss', $status_value, $student_id); 
     $stmt->execute(); 
    } 
} 

$query = mysqli_query($link, 'SELECT * FROM students'); 
while($row = $query->fetch_assoc()) { 
    $students[] = $row; 
} 

?> 

<form method="POST" action=""> 
    <?php foreach($students as $key => $value): ?> 
     <fieldset> 
      <p> 
       Name: <?php echo $value['fname'] . " " . $value['lname']; ?><br/> 
       Status: <b><?php echo ($value['status'] != '') ? $value['status'] : 'N/A'; ?></b><br/> 
       <input type="radio" name="status[<?php echo $value['idstudents']; ?>]" value="accepted" /> Accepted 
       <input type="radio" name="status[<?php echo $value['idstudents']; ?>]" value="rejected" /> Rejected 
      </p> 
     </fieldset> 
    <?php endforeach; ?> 
    <input type="submit" name="submit" value="Update" /> 
</form> 

注:因爲您現在正在使用的mysqli,採取參數化查詢的優勢。不要直接在查詢中使用$ _POST值。

相關問題