programing

성공적으로 실행하기 위해 동등한 mysqli 준비 문을 가져올 수 없습니까?

itmemos 2023. 9. 4. 19:33
반응형

성공적으로 실행하기 위해 동등한 mysqli 준비 문을 가져올 수 없습니까?

다음 코드 라인이 잘 작동하는 것 같습니다.

   if(isset($_POST['result'])) {
    if($_POST['result'] == 'true'){
        $delete_post_query = mysqli_query($con, "UPDATE posts SET deleted='yes' WHERE id='$post_id'");
        if($stmt = mysqli_prepare($con,$delete_post_query)){
        }
    }
   }

그러나 아래에 준비된 등가물은 실행되지 않는 것 같습니다.

   if(isset($_POST['result'])) {
    if($_POST['result'] == 'true'){
        $delete_post_query = mysqli_query($con, "UPDATE posts SET deleted='yes' WHERE id=?");
        if($stmt = mysqli_prepare($con,$delete_post_query)){
            mysqli_stmt_bind_param($stmt, "s",$post_id);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_close($stmt);
        }
    }
}

저는 이것에 대해 상당히 혼란스럽고 제가 명백한 것을 놓치고 있다고 꽤 확신합니다.제안/해결 방법이 있습니까?

업데이트/편집:

  • 제가 코드 복사/붙여넣기를 실수해서 제안대로 업데이트했습니다.

  • 또한 바인딩 매개 변수를 각각 정수와 이중으로 시도했습니다.

  • 이 문제는 바인딩 매개 변수와 관련이 있다고 생각합니다. 자리 표시자(즉, '?')를 하드 코드 변수 $post_id로 교체할 때 문제가 없습니다.

당신이 MySQLi를 사용하고 있기 때문에 당신은 당신의 코드에 다른 접근법을 취할 수 있고, 다음과 같은 것을 사용할 수 있습니다.

if(isset($_POST['result'])) {
    if($_POST['result'] == 'true'){
        $id = $_POST['post_id']; // make sure to define id
        $delete_post_query = "UPDATE posts SET deleted='yes' WHERE id=? LIMIT 1"
        if ($stmt = $mysqli->prepare($delete_post_query))
        {
            $stmt->bind_param("i",$id);
            $stmt->execute();
            $stmt->close();
        }
    }
}

입력할 매개 변수에 대한 참조를 전달하지 않았습니다.

$delete_post_query = mysqli_query($con, "UPDATE posts SET deleted='yes' WHERE id='$post_id'"); 

이 쿼리는 삭제하라고 말하고 사용자는 또한 다음을 제공했습니다.$post_id바로 아래에

mysqli_stmt_bind_param($stmt, "ss",$friend_array,$user_to_remove);

서버가 참조할 내용을 찾을 수 없는 바인딩 매개 변수가 있습니다.당신의 질문은 다음과 같아야 합니다.

$delete_post_query = mysqli_query($con, "UPDATE posts SET deleted='yes' WHERE id=?"); 

바인딩 매개 변수는 다음과 같아야 합니다.참조가 하나뿐이므로?하나의 매개 변수만 바인딩할 수 있습니다.또한.id이라int그 다음에 사용i한다면string그 다음에 사용s

mysqli_stmt_bind_param($stmt, "i",$user_to_remove);

//뉴웨이

$stmt = $con->prepare("UPDATE posts SET DELETED='yes' WHERE id=?");
$stmt->bind_param("i",$user_to_remove);
$stmt->execute();

언급URL : https://stackoverflow.com/questions/44809851/cant-get-an-equivalent-mysqli-prepared-statement-to-execute-sucessfully

반응형