2014-12-03 2 views
1

당신이 PHP가 제표를 작성에서 필드 이름을 설정하는 대신 단지 예를 들어,이 값을 설정 할 수있는 방법이 있나요, PHP자는 PreparedStatements 필드 이름

$stmt = $mysqli->prepare("UPDATE movies SET filmName = ?, 
    filmDescription = ?, 
    filmImage = ?, 
    filmPrice = ?, 
    filmReview = ? 
    WHERE filmID = ?"); 
$stmt->bind_param('sssdii', 
    $_POST['filmName'], 
    $_POST['filmDescription'], 
    $_POST['filmImage'], 
    $_POST['filmPrice'], 
    $_POST['filmReview'], 
    $_POST['filmID']); 
$stmt->execute(); 
$stmt->close(); 

는 할 수있는 간단한 방법은 무엇입니까? 예를 들어, 내가

$stmt->bind_param($_POST); 

뭔가를 할 수있는 방법은 그래서 올바른 이름을 가진 모든 것을 결합이?

+1

표준이 아니지만 쉽게 할 수있는 래퍼를 작성할 수 있습니다. 물론 '$ _POST ['submit ']'은 어떻게됩니까? –

+2

네, 더 간단한 방법이 있습니다 :'-> execute ([...]); 당 값 목록을 취하는 PDO 사용; – mario

+0

sssdii 란 무엇입니까? – gbvisconti

답변

0

이 정보가 도움이되기를 바랍니다. 나는 시험하지 않았다. 그러나 내가 무엇인가 놓쳤다면, 의견을 말하자. 나는 편집 할 것이다.

$sql = "UPDATE 
      movies 
     SET 
      filmName = ?, 
      filmDescription = ?, 
      filmImage = ?, 
      filmPrice = ?, 
      filmReview = ? 
     WHERE 
      filmID = ?"; 

$arrayFields = array("filmName" => "s" 
        , "filmDescription" => "s" 
        , "filmImage" => "s" 
        , "filmPrice" => "d" 
        , "filmReview" => "i" 
        , "filmID" => "i"); 

$stmt = $mysqli->prepare($sql); 

foreach($_POST as $key=>$val) { 

    if(array_key_exists ($key , $arrayFields)) { 

     $stmt->bind_param($arrayFields[$key], $_POST[$key]); 
    } 
} 
$stmt->execute(); 

$stmt->close(); 
+0

이것이 가능하다면 좋지 않을 것입니다. 불행히도 mysqli와 함께 작동하지 않습니다. – meda

+0

'대신? 그는 다음을 사용합니다 : filmName, 예를 들면? mysqli에서 가능합니까? 그런 다음 루프 내에서 $ 키를 사용하여 루프를 묶으십시오. – gbvisconti

+0

PDO 만 허용됩니다. 코드를 수정하여 PDO에서 수행하는 방법을 보여줍니다. – meda