2010-03-26 9 views
3

많은 요소가 포함 된 양식이 있습니다. DB 사용자가 SP를 생성 했으므로 이제 해당 저장 프로 시저를 호출해야합니다. 내 양식에 20 개의 요소가 있습니다. 제출할 때 데이터를 데이터베이스에 저장해야합니다. 삽입 쿼리에서이 작업을 수행하는 방법을 알고 있지만 SP를 호출하고이 작업을 수행하는 방법을 알고 있습니다.저장 프로 시저 및 PHP를 통해 정보를 추가 하시겠습니까?

데이터를 저장할 테이블이 10 개 있습니다.

+0

일반 SQL을 사용하면됩니다. 스크류 저장 프로 시저. –

+0

데이터를 삽입해야하는 테이블이 10 개 있습니다. – Kevin

+0

그런 다음 10 개의 일반적인 SQL 쿼리를 작성하거나 스키마를 수정하십시오. –

답변

4

MySQL에서는 저장 프로 시저를 사용한 적이 없지만 쿼리 키워드로 CALL을 사용한다는 점을 제외하면 "일반"SQL 쿼리와 다르지 않습니다.

대신에 :

INSERT INTO table (column1, column2, column3) VALUES ('value 1', 'value 2', 3) 

당신이 할 :

CALL function_name('value 1', 'value 2', 3); 

(이 당신의 저장 프로 시저가 function_name라는 2 개 문자열 인수와 숫자 인수를 걸립니다 가정한다

+1

물론 준비된 명령문을 사용하여이를 수행 할 수도 있습니다. function_name (: param1, : param2, : param3)을 호출하고 나중에 코드에서 매개 변수의 값을 설정하십시오 (입/출력 매개 변수는 http://php.net/manual/en/pdo.prepared-statements.php를 확인하십시오).). – wimvds

+0

@wimvds - 좋은 지적입니다. –

+0

답장을 보내 주신 Andy 감사합니다. – Kevin

1

PDO에는 준비된 문을 통해 저장 프로 시저를 사용하는 좋은 방법이 있습니다. 나는 강력하게 "plain damn SQL"을 사용하지 않고 작업하는 것을 강력하게 권장한다.

<?php 
// Calling a stored procedure with an output parameter 
$stmt = $dbh->prepare("CALL sp_returns_string(?)"); 
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); 

// call the stored procedure 
$stmt->execute(); 

print "procedure returned $return_value\n"; 
?> 
+0

감사합니다. 약간 복잡하다고 생각합니다. – Kevin

+0

보안 문자 – Kevin

+1

을 제외하고 일반 SQL 대신 PDO를 사용할 수있는 이유 PDO는 여전히 일반 SQL을 사용하고 있습니다. 예를 들어 mysql_query에 전달한 것과 똑같은 SQL입니다. 차이점은 더 나은 코딩 방법론 (객체 지향적입니다.) 보안 관점에서 매개 변수가있는 쿼리를 수행 할 수 있으므로 모든 입력을 피할 염려는 없지만 그렇게 할 수 있습니다 어쨌든 일반적인 MySQL 확장, 나는 믿습니다. –