2014-03-30 5 views
1

db 테이블의 모든 항목을 표시하는 동적 테이블이 있습니다. 각 행에는 삭제 단추가 있습니다.이 단추 중 하나를 클릭하여 데이터베이스의 항목을 삭제할 수 있다고 가정합니다. 하지만 작동하지 않습니다. phpmyadmin에서 삭제할 수 있습니다. 여기 내 PHP와 SQL 코드입니다 :MySQL에서 웹 응용 프로그램에서 삭제할 수 없습니다.

<?php 

@$db = new mysqli('localhost', 'xxxx', 'xxx', 'WARD'); 
if (mysqli_connect_errno()) { 
    echo 'Error: Could not connect to database. Please try again later.'; 
    exit; 
} 

$query  = "SELECT * FROM PATIENT"; 
$result  = $db->query($query); 
$num_results = $result->num_rows; 

echo " 
<form action=\"dbmgmt.php\" method=\"post\"> 
"; 
echo " 
<table data-role=\"table\" id=\"table-column-toggle\" data-mode=\"columntoggle\" class=\"ui-responsive table-stroke\"> 
<thead> 
<tr> 
<th data-priority=\"2\"> 
Patient_ID 
</th> 
<th> 
Patient Name 
</th> 
<th data-priority=\"3\"> 
Patient IC 
</th> 
<th data-priority=\"1\"> 
Phone 
</th> 
<th data-priority=\"5\"> 
Address 
</th> 
<th data-priority=\"5\"> 
Date Admit 
</th> 
<th data-priority=\"5\"> 
Date Discharge 
</th> 
</tr> 
</thead> 
<tbody> 
"; 
echo " 
</form> 
"; 
//This form is for submission of gymid to the reservation page. 
echo " 
<form action=\"dbmgmt.php\" method=\"post\"> 
"; 
for ($i = 0; $i < $num_results; $i++) { 
    $row = $result->fetch_assoc(); 

    if (stripslashes($row['Patient_ID']) == !0) { 
     echo " 
<tr> 
" . PHP_EOL; 
     echo " 
<td align=\"center\"> 
" . stripslashes($i + 1) . " 
</td> 
" . PHP_EOL; 
     echo " 
<td align=\"center\"> 
" . stripslashes($row['Patient_Name']) . " 
</td> 
" . PHP_EOL; 
     echo " 
<td> 
" . stripslashes($row['Patient_IC']) . " 
</td> 
" . PHP_EOL; 
     echo " 
<td align=\"center\"> 
" . stripslashes($row['Phone']) . " 
</td> 
" . PHP_EOL; 
     echo " 
<td align=\"center\"> 
" . stripslashes($row['Address']) . " 
</td> 
" . PHP_EOL; 
     echo " 
<td align=\"center\"> 
" . stripslashes($row['Date_Admit']) . " 
</td> 
" . PHP_EOL; 
     echo " 
<td align=\"center\"> 
" . stripslashes($row['Date_Discharge']) . " 
</td> 
" . PHP_EOL; 
     echo " 
<td align=\"center\"> 
<button type=\"submit\" name = \"deleteEntry\" value = \"" . stripslashes($row['Patient_ID']) . "\"> 
Delete 
</button> 
</td> 
" . PHP_EOL; 
     echo " 
</tr> 
" . PHP_EOL; 
    } 
} 

echo " 
</tbody> 
</table> 
"; 
echo " 
</form> 
"; 

$delete = NULL; 
if (isset($_POST['deleteEntry'])) { 
    $delete = $_POST['deleteEntry']; 
} 
$deletequery = "DELETE FROM PATIENT 
WHERE Patient_ID = $delete"; 
$deleteresult = $db->query($deletequery); 

$result->free(); 
$db->close(); 
?> 

업데이트 : delete.php라는 또 다른 파일을 만든 너무 게시물을 변경합니다.

<form action=\"delete.php\" method=\"post\"> 

<?php 
@ $db = new mysqli('localhost', 'xxxx', 'xxxx', 'WARD'); 
if (mysqli_connect_errno()) { 
    echo 'Error: Could not connect to database. Please try again later.'; 
    exit; 
} 

$delete = NULL; 
if(isset($_POST['deleteEntry'])){ $delete = $_POST['deleteEntry'];} 
//$deletequery = "DELETE FROM PATIENT 
//     WHERE Patient_ID = $delete"; 
//$deleteresult = $db->query($deletequery); 

mysqli_query($db,"DELETE FROM PATIENT 
        WHERE Patient_ID = $delete"); 

header ('Location: dbmgmt.php'); 
$result->free(); 
$db->close(); 

?>

+1

어떤 값을 u는 $ _POST [얻을

이 교체 : 당신은 또한

EDIT2을 삭제 AJAX를 사용할 수 있습니다 'deleteEntry']? –

+0

MySQL에서 어떤 오류 메시지가 다시 나타 납니까? 실행중인 SQL과 오류 메시지를 에코 할 수 있습니까? 또한 SQL 쿼리에 포함 된 모든 값을 이스케이프 처리해야합니다. 내가 준비된 쿼리를 사용하는 것이 좋습니다 : http://php.net/manual/en/mysqli.prepare.php –

+0

쿼리를 삭제하기위한 하드 코딩 된 값을 추가하려고 ... – Anri

답변

1

쿼리는 테이블에서 기록을 삭제하지만, 선택 한 Statment 당신이 그나마 왜 삭제 이잖아 전에 실행되기 때문에하면 삭제할 것을 볼 페이지를 두 번 새로 고침이 필요하다고보고 .

이 문제를 방지하려면 delete.php와 같은 다른 페이지로 삭제를 보내십시오.

편집 :

$delete = NULL; 
if (isset($_POST['deleteEntry'])) { 
    $delete = $_POST['deleteEntry']; 
} 
    $deletequery = "DELETE FROM PATIENT 
WHERE Patient_ID = $delete"; 
$deleteresult = $db->query($deletequery); 

로 :

if (isset($_POST['deleteEntry'])) { 
    $delete = $_POST['deleteEntry']; 

    $deletequery = "DELETE FROM PATIENT WHERE Patient_ID = '".$delete."' "; 
    $deleteresult = $db->query($deletequery); 
} 
+0

OK, 새 페이지로 보내려고합니다 : – yvonnezoe

+0

흠 나는'delete.php' 코드를 옮겨 보았습니다. 작동 안함. 질문 : 코드를 업데이트했습니다. – yvonnezoe

+0

예. 페이지가 모든 레코드를 반환 할 수 있습니다. – yvonnezoe

관련 문제