2014-11-18 3 views
0

나는 PHP에서 새로운 해요 및 데이터데이터베이스에서 데이터를 표시하고 삭제하는 방법은 무엇입니까?

<?php 
require_once 'config.php'; 
$que="SELECT `Fname`, `Lname` FROM `students`"; 
$myRun= mysql_query($que); 
$numOfRows=mysql_num_rows($myRun); 
if ($numOfRows> 0) { 

    while($row = mysql_fetch_array($myRun)) { 
     echo "First Name: " . $row['Fname']. " - Last Name: " . $row['Lname']; 
     echo ' <a href="update.php?id="/>Edit</a> 
      <a href="delete.php?id="/>Delete</a><br/>'; 
    } 
} else { 
    echo "There isn't data to be viewed"; 
    } 
?> 

삭제이 부분보기 위해 그것을

이 삭제 또한 데이터베이스의 데이터를 표시하려고 노력하지만, 내가 얻을하는 방법을 모른다 ID

<?php 
require_once 'config.php'; 
if(isset($_GET['ID'])){ 
    $id=$_GET['ID']; 
    $sql="DELETE FROM `students` WHERE `ID`=$id"; 
    $myquery= mysql_query($sql); 
    if($myquery){ 
     echo 'The Student #'.$id.'has beed deledted!'; 
    } 
} 
?> 

ID를 가져 오기 위해해야 ​​할 일을 삭제할 수 있습니까? ! = 'ID'난 당신이 데이터베이스에서 아이디를 조회하지 않았다입니다 참조

if(isset($_GET['id'])){ 
    $id = (int) $_GET['id']; 
    if ($id > 0) 
     $myquery= mysql_query($sql); 
} 
+1

코드를보다 안전하게 할 수는 mysql_real_escape_string 함수를 사용하는 것이 좋습니다

는'id'와'ID' 전부 * * 두 개의 서로 다른 동물이다. –

+0

ID는 데이터베이스의 열 이름입니다. – Haredy

+0

'? id'와'$ _GET [ 'ID']';) –

답변

0

첫 번째 문제를 시도

+0

전달 된 $ _GET [ 'ID']이 주어지면 데이터베이스에서 쿼리하여 URL을 통해 학생 이름을 전달하지 않아도됩니다. 그러나 데이터베이스 쿼리의 추가 오버 헤드가 발생합니다. – Dale

+0

대소 문자 구분을 위해 편집 됨 – Dale

0

'ID'. 학생들 테이블에는 ID가없는 경우,

$que="SELECT `ID`, `Fname`, `Lname` FROM `students`"; 

그것을 하나를 제공하기 위해 테이블을 변경하고, 아마 기본 키 및 자동 증가합니다 당신의 첫 번째 쿼리를 변경합니다.

그런 다음이 당신의 삭제 링크를 변경합니다

<a href="delete.php?ID=<?php echo $row['ID'];?>">Delete</a> 

그런 다음이에 당신의 코멘트를 변경합니다

echo 'The Student #'.$_GET['ID'].'has been deleted!'; 

당신은 처음과 마지막에 전달, 대신 ID로 주석으로하실 수 있습니다 이름도 바뀌었고 학생 "Bob Smith"가 삭제되었다고합니다.

echo 'The Student #'.$_GET['ID'].' ('.$_GET['Fname'].' '.$_GET['Lname'].') has been deleted!'; 
:이 작업을 수행 할 수 있도록, 자신의 데이터베이스 등가물과 같은 이름을 가진 변수를 GET으로 당신은 이제 당신은 이름과 성이있을 것이다 다음

<a href="delete.php?ID=<?php echo $row['ID'];?>&Fname=<?php echo $row['Fname'];?>&Lname=<?php echo $_GET['Lname'];?>">Delete</a> 

에 삭제 링크를 변경 할 것을해야 할 일

마지막으로 위의 설명에서 언급했듯이 SQL 인젝션을 피하기 위해 ID를 삭제하기 전에 삭제해야합니다.

귀하의 삭제 행은 다음과 같습니다

$que="SELECT `ID`, `Fname`, `Lname` FROM `students`"; 
//more code... 

    while($row = mysql_fetch_array($myRun)) { 
     echo "First Name: " . $row['Fname']. " - Last Name: " . $row['Lname']; 
     echo ' <a href="update.php?id="'.$row['ID'].'>Edit</a> 
     <a href="delete.php?id="'.$row['ID'].'>Delete</a><br/>'; 
    } 

의견에서 (@Rasclatt을) : 그들은 ID를 가지고해야합니다 보여주는 링크하는 경우

$sql="DELETE FROM `students` WHERE `ID`=".(int)$_GET['ID']; 
+2

그래, 내가 말했다. –

+0

내가 그것을 사용할 때, 나는이 메시지를 얻었다 "학생 # 0은 deledted되었다!" 그러나 어떤 데이터도 없습니다 ID = 0 – Haredy

0

은 아마이 도움이, 마음에 걸릴

if(isset($_GET['id']) && is_numeric($_GET['id'])){ 
    $id=$_GET['id']; 

그런 다음 PDO 또는 mysqli (제안 사항으로 PDO)

012로 변경할 수 있습니다
0

URL의 스크립트에 ID 매개 변수를 전달해야합니다. 그것이 $_GET['ID'] 파트 파트입니다.

그래서 URL은 http://website.com/delete_student.php?ID=5

그런 다음 $id 변수가 올바르게 설정되고 쿼리가 작동합니다 같은 것입니다.

ID 값이 양식에서 오는 경우 $_POST['ID']을 사용할 수도 있습니다. 또한 http://php.net/manual/en/function.mysql-real-escape-string.php

관련 문제