2015-02-06 7 views
-2

내 코드에 도움이 필요합니다. 제출 코드를 클릭하면 항상 "사용자가 성공적으로 실행되었습니다"라는 메시지가 나타납니다. 그러나 쿼리가 성공적으로 실행되지 않으면 사용자는 여전히 데이터베이스에 있습니다.DELETE 문 PHP MySQL

수정 : mysql/msqli 문제가 해결되었습니다. 쿼리는 "사용자가 성공적으로 시작되었습니다."대신 "문제가 발생했습니다"라고 대답합니다. 하지만 mysql_error 보고서에서 오류가 발생하지 않습니다. 내가 뭘 할 수 있니?

include 'connect.php'; 

if(empty($_POST['user_id'])) 
    { 
      echo '<form method="post" action=""> 
        User_id: <input type="text" name="user_id" /> 
       <input type="submit" value="Kick user" /> 
       </form>'; 

    } 
    else 
    { 
     $sql = "DELETE FROM users 
       WHERE 
       user_id = '" .mysqli_real_escape_string($_POST['user_id']) . "' 
       "; 

     $result = mysqli_query($con, $sql); 
     if($result) 
     { 
      //something went wrong, display the error 
      echo 'Something went wrong!.'; 
      echo mysqli_error(); //debugging purposes, uncomment when needed 
     } 
     else 
     { 
      echo 'User successfully kicked!'; 
     } 
    } 

내 connect.php은 다음과 같습니다

<?php 
$con=mysqli_connect ("localhost","root","","dps"); 
if (mysqli_connect_errno()) { 
echo "failed to connect mysql: ". mysqli_connect_error(); 
} 
?> 
+2

귀하의 SQL 문자열은 '... 다른 경우 ...'문장의 잘못된 블록에서 만든된다. –

+2

API를 혼합하고 있습니다. –

+2

여는'

답변

2

당신은 if 부분에 $sql VAR를 설정하는 그리고 ac를 시도해 보라. 그것을 else 부분에 넣으십시오. 이것은 작동하지 않습니다.

include 'connect.php'; 

if(empty($_POST['user_id'])) 
{ 
     echo '<form method="post" action=""> 
       User_id: <input type="text" name="user_id" /> 
      <input type="submit" value="Kick user" /> 
      </form>'; 

} 
else 
{ 
    $sql = "DELETE FROM users 
      WHERE 
      user_id = '" .mysqli_real_escape_string($con, $_POST['user_id']) . "' 
      "; 

    $result = mysqli_query($con, $sql); 
    if(!$result) 
    { 
     //something went wrong, display the error 
     echo 'Something went wrong!: '; 
     echo mysqli_error($con) //debugging purposes, uncomment when needed 
    } 
    else 
    { 
     echo 'User succesfully kicked!'; 
     mysqli_free_result($result); 
    } 
} 

나쁜 또한 당신이 혼합되는 라이브러리를 사용하는 connect.php을 변경해야 할 수도 있습니다 (MySQL이 사용되지 않으며 PHP에서 제거되기 때문에 MySQL이 mysqli와 동일하지 않습니다는 mysqli를 사용) mysqli

편집 : 거기에 몇 가지 오류는 이제 수정되어야

+0

http://php.net/manual/en/mysqli.real-escape-string.php를 읽고 다음을 수정하십시오 .- –

+0

고마워요, 그 중 하나가 없습니다. –

+0

바트입니다. –

-1

추가 :

$result = mysqli_query($con, $sql); 

후 :

$sql = "DELETE FROM 
        users 
       WHERE 
        user_id = '" . mysql_real_escape_string($_POST['user_id']) . "' 
       "; 
+0

DV가 아니지만 mysqli가 사용 중이면 매개 변수 바인딩이 더 좋을 것입니다. 이스케이프 함수가 올바르지 않습니다. mysql과 mysqli 함수를 함께 사용하지 마십시오. – halfer

+2

@halfer 실제로'i'를 추가하고 DB 연결을 전달해야합니다. 그러나 매개 변수화 된 것이 좋습니다. –

+0

또 다른 팁 @Maikel : "it does not work"라는 구절은 사람들에게 반응 할 새로운 것을주지 못한다는 것을 기억하십시오. 문제에 대해 더 자세히 설명하십시오. – halfer