'mysqli_stmt_bind_param'에 해당되는 글 1건

  1. 2012.07.11 mysqli_stmt_bind_param , mysqli .. prepare, bind_param
php2012. 7. 11. 13:47

$conn = mysqli_connect("localhost", "test", "test", "test");

 $conn->query("Create table test_model"."(year integer, model varchar(50), accel REAL)");

 $stmt = $conn->prepare("insert into test_model values(?,?,?)");
 $stmt->bind_param("isd", $year, $model, $accel);

 

 prepare 의 사전적 의미를 생각한다면 쉽게 이해할 수 있다.

 

 $stmt = $conn->prepare("insert into test_model values(?,?,?)");

 

 쿼리를 이렇게 날리겠다. 라는 의미라고 생각해도 무방할 듯 하다.

 $stmt->bind_param("isd", $year, $model, $accel);

 

 여기서는 컬럼이 총 3개인데 파라메타 값이 4개가 들어가 있다.

 

 첫 isd 를 제외하고는 나머지는 컬럼에 들어갈 값이라는 걸 쉽게 알 수 있다.

 

 isd를 잘 살펴 보면 의외로 답은 쉽게 나온다.

 

 i 의 경우는 integer 를 의미하고

 

s 의 경우는 문자(string)을 의미하고

 

d 의 경우는 double 형을 의미한다.

 

$year, $model, $accel 의 순서로 입력이 되니 첫번쨰 파라메터 역시 isd로 써주면 된다.

 

추가적으로 b 옵션이 하나 있는데 이것은 blob 형으로 들어간다고 메뉴얼에.. ㅡ,,ㅡ


/*
 $year = 2001;
 $model = '156 2.0 Selespeed';
 $accel = 8.6;
 $stmt->execute();

 $year= 2003;
 $model = '147 2.0 Selespeed';
 $accel = 9.3;
 $stmt->execute();

 $year = 2004;
 $model = '156 GTA Sportwagon';
 $accel = 6.3;
 $stmt->execute();
*/

마지막으로 위 주석으로 된 코드에 주석을 없애고 실행을 하면 디비에 잘 들어가 있는 것을

 

확인할 수 있다.

 

디비에서 가져올 경우는

 

 $conn = mysqli_connect("localhost", "test", "test", "test");

 $stmt = $conn->prepare("select * from test_model order by year");
 $stmt->execute();

 $stmt->bind_result($year, $model, $accel);

 echo "<table>\n";
 echo "<tr><th>model</th><th>0-100 km/h</th></tr>\n";

 while($stmt->fetch()){
  echo "<tr><td>$year $model</td><td>{$accel} sec</td>\n";
 }
 echo "</table>\n";

Posted by 다오나무