2013-09-22 6 views
-1

나는 이것을 알아낼 수 없다. 나는 주위를 둘러 보았습니다. 그리고 다른 모든 사람들이이 일을 아주 둥글게 처리하는 것처럼 보입니다. 회원 삭제를위한 페이지를 만들었습니다. 사용자는 사용자 이름을 입력하고 select를 클릭하면 데이터베이스에서 특정 레코드를 검색합니다. 사용자는 삭제 버튼을 클릭하여 사용자를 삭제할 수 있습니다. 내가 가진 문제는 삭제 부분이 작동하지 않는다는 것입니다. 여기 html이 있습니다 :PHP를 사용하여 mysql에서 레코드 삭제하기

<?php 
require_once('../include/officer_session_timeout_db.inc.php'); 
if (isset($_POST['viewmember'])) { 
$username = trim($_POST['username']); 
require_once('../include/viewmember.inc.php'); 
} 
?> 

위의 부분은 정상적으로 작동합니다. 그것은 작동하지 않는 삭제 섹션 일뿐입니다. 여기

<?php 
if (isset($_POST['delete'])) { 
    require_once('../include/deletemember.inc.php'); 
} 
?> 



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
</head> 

<body> 



<div id="MainContentBox"> 




    <Div id="MainContentTitle">DELETE A MEMBER!!!!<br> 


      <div id="MainContentText"> 



      <form id="viewmember" method="post" action=""> 

User Name: <input type="text" name="username" id="username"> 
<input name="viewmember" type="submit" id="viewmember" value="Search"> 

</form> 

<?php echo $firstname;?> <?php echo $lastname;?>   

      <fieldset style="width:500px"> 
<legend>Address</legend> 
<?php echo $address;?><br> 
<?php echo $city;?><br> 
<?php echo $state;?> , <?php echo $zip;?> 

</fieldset> 
<fieldset style="width:500px"> 
<legend>Contact Information</legend> 
E-Mail:<a href="mailto:<?php echo $email;?>"><?php echo $email;?></a> <br> 
Home Phone: <?php echo $homephone;?><br> 
Cell Phone: <?php echo $cellphone;?><br> 
</fieldset> 

<?php 
if (isset($success)) { 
echo "<p>$success</p>"; 
} elseif (isset($errors) && !empty($errors)) { 
echo '<ul>'; 
foreach ($errors as $error) { 
echo "<li>$error</li>"; 
} 
echo '</ul>'; 
} 
?> 

<form id="delete" method="post" action=""> 

<input name="delete" type="submit" id="delete" value="DELETE MEMBER!!!!"> 
</form> 
     </div> 
      </div> 

    </body> 
는 deletemember.inc.php 파일에 대한 코드입니다 '?'

<?php 
require_once('connection.inc.php'); 
    $conn = dbConnect('write'); 
    // prepare SQL statement 
$sql = "DELETE FROM members WHERE username='$username'"; 
    $stmt = $conn->stmt_init(); 
    $stmt = $conn->prepare($sql); 
    // bind parameters and insert the details into the database 
    $stmt->bind_param('s', $username); 
    $stmt->execute(); 
if ($stmt->affected_rows == 1) { 
    $success = "Your information has been updated."; 
    } else { 
    $errors[] = 'Sorry, there was a problem with the database.'; 
    } 

답변

1

사용하십시오 바인딩 할 매개 변수를 표시합니다. 이 시도 :

쿼리에서이 매개 변수를 바인딩 할 위치를 알 필요가있다, 그래서 당신은 ? 각 대체를 표시 mysqli
$sql = "DELETE FROM members WHERE username=?"; 
$stmt = $conn->stmt_init(); 
$stmt = $conn->prepare($sql); 
// bind parameters and insert the details into the database 
$stmt->bind_param('s', $username); 

. 자세한 정보와 예제는 bind_param 문서를 확인하십시오. http://php.net/manual/en/mysqli-stmt.bind-param.php

+0

정보 주셔서 감사합니다. 나는 "?" 위와 같고 $ stmt 코드를 모두 제거해 보았습니다. 변수 대신 실제 데이터를 사용하여 시도했지만 작동하지 않습니다. 항상 데이터베이스에 문제가 있다는 오류를 반환합니다. – Type540

+0

'? '자리 표시자를 사용하여 수정 된 코드로 질문을 업데이트하고 어떤 오류 메시지를 표시 할 수 있습니까? –

+0

오류가 발생하지 않았습니다. 무슨 일이 일어 났는지 생각해 봅시다. 여러 변수를 같은 변수에 할당하고있었습니다. 나는 회원들을 정말로 삭제하지 않도록 재 작업했다. 대신 로그인 이름을 변경합니다. 예를 들어, "username"은 "deleted"가 "username_deleted"가 될 것입니다. 멤버가오고가는 것이므로, 멤버를 다시 추가하는 것은 어려울 것입니다. 새 사용자 이름은 사용자에게 알려지지 않으므로 알고있는 한 사용자 이름은 존재하지 않습니다. 이 작업을 수행하는 과정에서 기본적으로 일부 변수의 이름을 변경하고 'DELETE를 UPDATE로 변경했습니다. 이제 작동합니다. 이 불쌍한 초보자를 도와 주심에 다시 한번 감사드립니다. :) – Type540

1

어디에서 param 's가 보이지 않습니다.

param '이 (가) 존재하지 않으므로 바인드 할 필요가 없습니다.

관련 문제