2014-02-26 3 views
-1

SQL 호출을보다 안전하게하기 위해 노력하고 있으며 준비된 문을 작성하는 두 가지 방법을 접하게됩니다. 둘 사이에 차이가 있는지 궁금합니다. PHP MYSQL 준비된 문 - 차이점

는 쿼리입니다 :

$query = 
      "INSERT INTO companies 
      VALUES(
       NULL, 
       :name, 
       :assignation, 
       :priority 
       )"; 

1)

 $statement = $pdoDbInstance->prepare($query); 

     $statement->bindValue(':name', $name); 
     $statement->bindValue(':assignation', $assignation); 
     $statement->bindValue(':priority', $priority); 

     $result = $statement->execute(); 

2)

$statement = $pdoDbInstance->prepare($query); 

$result = $statement->execute(array(":name" => $name, ":assignation" => $assignation, ":priority" => $priority)); 

그들 사이에 유의 한 차이가 있나요 ????

+0

하지만, 첫 번째 방법은 루프를 사용할 때 좋습니다 –

+0

예,이 다른 게시물 내 질문 [바인딩없이 PDO] (http://stackoverflow.com/questions/21110329/using-pdo- 바인딩없이) –

답변

2

https://stackoverflow.com/a/12392590/2124401에 따르면 데이터 유형을 적용해야하는지 여부가 중요합니다. Execute는 항상 문자열을 전달하므로 다른 데이터 유형이나 특정 데이터 유형이 필요하면 bindValue 또는 bindParam을 사용하십시오. 그렇지 않으면 단지 선호의 문제 일뿐입니다.