2011-11-01 8 views
-1

의 행 값을 얻는다면 $ selectedmovieid에 대한 결과로 "id"열에 대한 행 결과를 얻고 싶습니다. 'commenid'는 기본 키 속성입니다. mysql_fetch_assoc을 올바르게 사용하는 방법을 알지 못해 죄송합니다.다음 코드에서 "id"열

<?php 
require ("connect-comment.php"); 
$deleteid=$_GET['commentid']; 
$query1=mysql_query("SELECT id FROM comment WHERE commentid='$deleteid'"); 
$selectedmovieid= mysql_fetch_assoc($query1); 
$query2=mysql_query("DELETE FROM comment WHERE commentid='$deleteid'"); 
header("Location: reload.php?id=$selectedmovieid"); 
?> 

편집 1 : 난 그냥 구문 권리를 취득하고 올바른 결과를 얻을 필요가, 훨씬 나중에 보안 주입을 할 것입니다. 그래서 내가 지금까지 무엇을했는지입니다 : 내가 reload.php?id=

+2

당신은'HTTP 입력하면 다음의 // php.net/'다음 이름 함수에 대한 정보가 필요하면 PHP 매뉴얼의 페이지로 이동합니다. 매뉴얼은 거의 항상 예제를 제공합니다. http://php.net/mysql_fetch_assoc –

+2

아참. 너무 unsanitized 사용자 입력 ... 당신은 절대로 SQL 문에 사용자 (특히 GET 매개 변수가 아닌)에서 가져온 뭔가를 삽입해야합니다. 그리고 mysql_fetch_assoc()이 어떻게 작동하는지 알아내는 것은 정말 어려운 일이 아니다. 설명서에서 찾아보십시오. –

+1

틸 (Till)의 의미에 대해 자세히 설명합니다. http://php.net/manual/en/security.database.sql-injection.php –

답변

0

에 올바른 $selectedmovieid 값을 구문 분석하고 있지 않다 왜냐하면

<?php 
require ("connect-comment.php"); 
$deleteid=$_GET['commentid']; 
$query1=mysql_query("SELECT id FROM comment WHERE commentid='$deleteid'"); 
while ($selectedmovieid= mysql_fetch_assoc($query1)) 
{echo $selectedmovieid['id'];}; 
$query2=mysql_query("DELETE FROM comment WHERE commentid='$deleteid'"); 
header("Location: reload.php?id=$selectedmovieid"); 
?> 

지금이 변화 시도 나에게 많은 이해가되지 않습니다

$deleteid=$_GET['commentid']; 
// ... 
header("Location: reload.php?id=$selectedmovieid"); 

또한

$deleteid = mysql_real_escape_string($_GET['commentid']); 
// ... 
header("Location: reload.php?id={$selectedmovieid['id']}"); 

, 페카 바르게 알 수 있듯이

manual page for mysql_fetch_assoc()reading up on SQL injection을 읽어보십시오.

보조 노트로 이 아닌Location: 헤더 리디렉션의 상대 경로를 사용해야합니다. RFC에서는이 필드에 전체 URL을 포함해야하며 많은 브라우저가 상대 경로를 올바르게 해석하지만이 동작을 신뢰할 수 없습니다. 즉, Location: reload.php?id=...Location: http://mysite.tld/reload.php?id=

편집 할 샘플 코드의 전체 버전을 시도해야합니다

<?php 

    require ("connect-comment.php"); 
    $deleteid = mysql_real_escape_string($_GET['commentid']); 

    // Added LIMIT 1 to the query, because you are only using one result 
    if (!$query1 = mysql_query("SELECT `id` FROM `comment` WHERE `commentid` = '$deleteid' LIMIT 1")) { 
    // Do NOT show the output of mysql_error() to the user in a production environment! 
    exit("Something went wrong with query 1: ".mysql_error()); 
    } else if (mysql_num_rows($query1) < 1) { 
    exit("No results from query 1"); 
    } 
    $selectedmovieid = mysql_fetch_assoc($query1); 
    $selectedmovieid = $selectedmovieid['id']; // $selectedmovieid now contains the id you want 

    if (!$query2 = mysql_query("DELETE FROM `comment` WHERE `commentid` = '$deleteid'")) { 
    // Do NOT show the output of mysql_error() to the user in a production environment! 
    exit("Something went wrong with query 2: ".mysql_error()); 
    } 

    // If we get this far, everything should be fine 
    // You still need a full URL here though, not a relative path... 
    header("Location: reload.php?id=$selectedmovieid"); 

?> 
+0

위의 수정 된 버전 사용해보기 – DaveRandom

관련 문제