2014-04-18 2 views
0

SQL에 대한 연결을 테스트했으며 올바르게 연결 중입니다. 그러나 어떤 이유로 든 내 쿼리가 Error. BOOM! 메시지를 반환하고 작동하지 않습니다. 무슨 일이 일어나고 있는지 아십니까?왜 내 SQL 쿼리가 실패합니까?

$query = "INSERT INTO `members` 
(`id`,`fname`,`lname`,`password`,`email`,`vatid`,`transfer`, `link`, `ip`) 
SELECT `id`,`fname`,`lname`,`password`,`email`,`vatid`,`transfer`, `link`, `ip` 
FROM applicants WHERE id=$_GET[id]"; 

if (!mysqli_query($connection,$query)){ 
    // 
    //die (mysql_error()); 
    print("Error. BOOM!"); 
} else { 
    //Or on success: 
    print ("Thank you for your registration"); 
    //or you can do redirect to some page, like this: 

    //header('location: /thanks.php'); 
} 

$query = "DELETE * FROM applicants WHERE id=$_GET[id]"; 

if (!mysqli_query($connection,$query)){ 
    // 
    //die (mysql_error()); 
    print("Error. BOOM!"); 
} else { 
    //Or on success: 
    print ("Thank you for your registration"); 
    //or you can do redirect to some page, like this: 

    //header('location: /thanks.php'); 
} 
+4

mysqli_error()를 검사 해 보았습니까? 뭘 말했지? mysql_error() 사용에 대한 코멘트가 있지만, 그렇지 않으면 mysqli_ *를 사용할 때 많은 정보를 제공하지 않을 것이다. –

+1

어딘가에서 $ connection이 초기화되기를 바랍니다. –

+0

MP에 참여하면 영국에서 일이 잘못됩니다! –

답변

0

: 당신은 실수를 결정하기 위해 삭제 쿼리이 형식을 시도 할 수 있습니다

error_reporting(E_ALL); 
0

먼저 SQL 주입 문제가 있습니다. 항상 변수를 쿼리에 넣기 전에 이스케이프 처리하십시오.

사용이 오류를 확인하고 무슨 일이 일어나고 있는지에 대한 더 나은 메시지를 얻을 :

또한
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

초 쿼리는 오타를 가지고, 대신를 사용

$query = "DELETE * FROM applicants WHERE id=$_GET['id']"; 
+0

나는 내가하고있는 일에 대한 주사를 너무 걱정하지 않지만, 당신이 맞도록하는 것이 좋으며, 쉽게 고칠 수있는 것은 나쁘다. 나는 당신의 충고를 받아서 mysqli_error()를 사용하여 문제가 무엇인지 판단했다. '당신은 SQL 구문에 오류가 있습니다; '$ query = "DELETE * FROM applicator where id = $ _ GET [id]"에 대해'* FROM applicants WHERE here = 1 'at line 1' 근처에서 사용할 올바른 구문에 대해서는 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. '. – ChrisMP

+0

'$ _GET [id]'는'$ _GET [ 'id']' – NMC

+0

오타가있는 편집 된 대답이어야합니다. – NMC

1

먼저 전제 조건, 매개 변수가있는 쿼리으로 전환하십시오. 나는 PHP의 사람이 아니지만, $_GET[id] 그냥 요청 매개 변수 인 것처럼 나에게 보이는

INSERT INTO `members` (
    `id` 
    ,`fname` 
    ,`lname` 
    ,`password` 
    ,`email` 
    ,`vatid` 
    ,`transfer` 
    ,`link` 
    ,`ip` 
    ) 
SELECT `id` 
    ,`fname` 
    ,`lname` 
    ,`password` 
    ,`email` 
    ,`vatid` 
    ,`transfer` 
    ,`link` 
    ,`ip` 
FROM applicants 
WHERE id = ? 

내 첫번째 추측 회원의 해당 ID가 생성 된 열입니다; 나는 당신이 사용하고있는 RDBMS를 모르지만, 엔진이 새로운 멤버의 ID를 결정하도록해야 할 수도 있습니다.

-1
error_reporting(E_ALL); 

$query = "INSERT INTO `members` (`id`,`fname`,`lname`,`password`,`email`,`vatid`,`transfer`, `link`, `ip`) SELECT `id`,`fname`,`lname`,`password`,`email`,`vatid`,`transfer`, `link`, `ip` FROM applicants WHERE id=".$_GET['id'].""; 

if (!mysqli_query($connection,$query)){ 
    // 
//die (mysql_error()); 
print("Error. BOOM!"); 
} else { 
    //Or on success: 
    print ("Thank you for your registration"); 
    //or you can do redirect to some page, like this: 

    //header('location: /thanks.php'); 
} 

$query = "DELETE FROM applicants WHERE id=".$_GET['id'].""; 

if (!mysqli_query($connection,$query)){ 
    // 
    //die (mysql_error()); 
    print("Error. BOOM!"); 
} else { 
    //Or on success: 
    print ("Thank you for your registration"); 
    //or you can do redirect to some page, like this: 

    //header('location: /thanks.php'); 
} 

하거나 SQL 탭에서 데이터베이스에 phpMyAdmin을에 쿼리를 테스트 할 수 있습니다.

DELETE * FROM applicants WHERE id=$_GET[id]; 

입니다 : 이것은

<?php 
$sql = " 
    DELETE FROM 
     applicants 
    WHERE 
     id = ".mysql_real_escape_string($_GET[id])." 
"; 

if(!$res = mysql_query($sql)) 
{ 
    trigger_error(mysql_error().'<br />In query: '.$sql); 
} 
elseif(mysql_affected_rows() == 0) 
{ 
    echo 'No records Deleted. <br />Query: '.$sql; 
} 
else 
{ 
    echo 'There are '.mysql_affected_rows().' records deleted.'; 
} 
?> 
+0

은 $ _GET [ 'id']가 아니어야합니다. $ _GET [id] –

+0

맞습니다. 잊어 버렸습니다. 나는 빨리 대답했다. 그래서 나는 실수를했다. –

0

:

아니면 PHP 파일 넣어에서

유효하지 않은 SQL. 별표를 잃어 버려야합니다.

DELETE FROM applicants WHERE id=$_GET[id]; 

특히 디버깅하기가 어려워 질 때 두 가지 쿼리 중 하나라도 실패하면 동일한 출력을 제공하게됩니다.

+0

고마워. 나는 mysqli_error()를 사용하여 문제를 발견했다.'당신은 SQL 구문에 오류가 있습니다; '* FROM applicants 근처에서 사용할 코드를 찾으려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오.'$ query = "DELETE * FROM applicants where id = $ _ GET [ id] ";'. – ChrisMP

+0

오류 메시지가 표시되면 내 대답을 읽어보십시오. –

+0

삭제 쿼리에서 *를 사용하지 마십시오. –