2017-02-02 4 views
-1

나는 여러 개의 튜토리얼을 따라 왔고, delete 문과 PHP에서 PHP를 사용하는 방법에 대한 많은 포럼에서 많은 질문을 읽었습니다. 바인딩 된 매개 변수가 아니라 바인딩 된 매개 변수, 준비된 함수 사용, 내 변수 및 인덱스 정의. 인덱스 페이지에서 삭제 링크를 클릭하면 프로그램은 오류없이 삭제 페이지로 리디렉션되지만 테이블에서 해당 행을 삭제하지 않습니다. 가능한 한 간단하게 만들기 위해 프로그램을 두 개의 열만으로 작게 만들었습니다. 그리고 나는 각 튜토리얼과 정확한 구문을 사용했고, 3 일이 지나면 완전히 지칠 때까지 따라했습니다. 아무도 나에게 내가 옳은 일을하지 않은 것을 보여줄 수 있다면 나는 그것을 고맙게 생각할 것이다. 링크 및 delete.php 페이지가있는 색인 페이지의 코드를 게시 할 것입니다. Fred-ii- 나는 모든 대답을 읽었습니다. 잘라 내기는 테이블에만 삭제할 수 있기 때문에 나에게는 적용되지 않습니다. 모든 행을 삭제하지 않으므로 WHERE 절을 사용합니다. 유사한 다른 질문과 달리 나는 어떤 오류도 내지 않습니다. 내 코드를 제안했지만 내 delete 구문은 여전히 ​​내 인덱스 페이지의 행을 삭제하지 않는 코드를 다시 작성했습니다. 내 WHERE 절은 내 데이터베이스의 기본 키인 name_id를 가리 킵니다.pdo php crud doen't에서 내 delete 문은 어떻게 작동합니까?

 <p><td><a href="delete.php?name_id=<?php echo $row['name_id']; ?>">Delete</a></td></p> 
    And here is the code from the delete page. 

    require_once 'debase.php'; 

// Get the name to delete 
if(isset($_GET['name_id'])){ 
$name_id = $_GET['name_id']; 
try{ 
    //$dns ="mysql:host=localhost;dbname=$db;charset=$charset"; 
$conn = new PDO($dsn,$user,$pass); 
$stmt = $conn->prepare("DELETE * FROM student WHERE name_id=':name_id'"); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$stmt->bindValue(':name_id',$name_id, PDO::PARAM_STR); 
$stmt->execute(); 

} catch (PDOException $e){ 
$error_message = $e->getMessage(); 
$conn = null; 
} 
} 

enter image description here

답변

1

귀하의 SQL 구문이 올바르지 않습니다.
당신은 단지 DELETE FROM ...하지 DELETE * FROM ...

또한 ':name_id'

+0

라운드 따옴표를 제거, 매개 변수화 된 쿼리 인용 매개 변수가 필요하지 않습니다. – miken32

+0

그래서 *와 따옴표를 제거하면 제대로 작동합니까? – swydell

+0

또한 name_id = ': name_id''를'name_id = : name_id'로 변경하십시오. – RiggsFolly