PHP MySQL은 여러 데이터를 삽입
여러 데이터를 삽입 할 mysqli 함수와 PDO MySQL을 사용
mysqli_multi_query () 함수는 여러 SQL 문을 실행하는 데 사용됩니다.
테이블이 세 개의 새로운 기록 추가 다음 예는 "MyGuests"에 있습니다 :
예 (mysqli 함수 - 개체 지향)
<? PHP는
$ 서버 이름 = "로컬 호스트";
$ 사용자 이름 = "사용자 이름";
$ 암호 = "암호";
$ DBNAME = "MYDB";
// 링크 만들기
$ 코네티컷 주 = 새로운 mysqli 함수 ($ 서버 이름, $ 이름, $ 암호, $의 DBNAME);
// 링크 확인
경우 ($ conn-> connect_error) {
( "연결 실패 :"$ conn-> connect_error.) 다이;
}
$는 SQL = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '존', '미상', '[email protected]'); ";
$는 SQL. = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '마리아', '모에', '[email protected]'); ";
$는 SQL. = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '줄리', '둘리', '[email protected]') ";
경우 ($ conn-> multi_query ($의 SQL) === TRUE) {
"새로운 레코드가 성공적으로 삽입된다"에코;
} 그밖에 {
. 에코 "오류 :"$의 SQL "로 <br>"$ conn-> 오류; ..
}
$ Conn-> 닫기 ();
?>
$ 서버 이름 = "로컬 호스트";
$ 사용자 이름 = "사용자 이름";
$ 암호 = "암호";
$ DBNAME = "MYDB";
// 링크 만들기
$ 코네티컷 주 = 새로운 mysqli 함수 ($ 서버 이름, $ 이름, $ 암호, $의 DBNAME);
// 링크 확인
경우 ($ conn-> connect_error) {
( "연결 실패 :"$ conn-> connect_error.) 다이;
}
$는 SQL = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '존', '미상', '[email protected]'); ";
$는 SQL. = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '마리아', '모에', '[email protected]'); ";
$는 SQL. = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '줄리', '둘리', '[email protected]') ";
경우 ($ conn-> multi_query ($의 SQL) === TRUE) {
"새로운 레코드가 성공적으로 삽입된다"에코;
} 그밖에 {
. 에코 "오류 :"$의 SQL "로 <br>"$ conn-> 오류; ..
}
$ Conn-> 닫기 ();
?>
각 SQL 문을 세미콜론으로 구분해야합니다. |
예 (mysqli 함수 - 프로세스 중심)
<? PHP는
$ 서버 이름 = "로컬 호스트";
$ 사용자 이름 = "사용자 이름";
$ 암호 = "암호";
$ DBNAME = "MYDB";
// 링크 만들기
$ 코네티컷 주 = mysqli_connect ($ 서버 이름, $ 이름, $ 암호, $의 DBNAME);
// 링크 확인
만약 (! $의 CONN) {
( "연결 실패"mysqli_connect_error을 ().) 죽을;
}
$는 SQL = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '존', '미상', '[email protected]'); ";
$는 SQL. = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '마리아', '모에', '[email protected]'); ";
$는 SQL. = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '줄리', '둘리', '[email protected]') ";
경우 (mysqli_multi_query ($의 CONN, $의 SQL)) {
"새로운 레코드가 성공적으로 삽입된다"에코;
} 그밖에 {
. 에코 "오류 :"$의 SQL "로 <br>"mysqli_error ($의 CONN) ..
}
mysqli_close ($의 CONN);
?>
$ 서버 이름 = "로컬 호스트";
$ 사용자 이름 = "사용자 이름";
$ 암호 = "암호";
$ DBNAME = "MYDB";
// 링크 만들기
$ 코네티컷 주 = mysqli_connect ($ 서버 이름, $ 이름, $ 암호, $의 DBNAME);
// 링크 확인
만약 (! $의 CONN) {
( "연결 실패"mysqli_connect_error을 ().) 죽을;
}
$는 SQL = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '존', '미상', '[email protected]'); ";
$는 SQL. = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '마리아', '모에', '[email protected]'); ";
$는 SQL. = "MyGuests INTO INSERT (이름, 성, 이메일)
VALUES ( '줄리', '둘리', '[email protected]') ";
경우 (mysqli_multi_query ($의 CONN, $의 SQL)) {
"새로운 레코드가 성공적으로 삽입된다"에코;
} 그밖에 {
. 에코 "오류 :"$의 SQL "로 <br>"mysqli_error ($의 CONN) ..
}
mysqli_close ($의 CONN);
?>
예를 들면 (PDO)
<? PHP는
$ 서버 이름 = "로컬 호스트";
$ 사용자 이름 = "사용자 이름";
$ 암호 = "암호";
$ DBNAME = "myDBPDO";
{시도
$ 코네티컷 주 = 새로운 PDO ( "MySQL은 : 호스트 = $ 서버 이름, DBNAME = $ DBNAME", $ 이름, $ 암호);
예외에 PDO 오류 모드를 설정 //
$ Conn->의 setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
트랜잭션을 시작 //
$ Conn-> 들어 BeginTransaction ();
// SQL 문
$ Conn-> 간부 ( "(MyGuests INTO INSERT 이름, 성, 이메일)
VALUES ( '존', '미상', '[email protected]') ");
$ Conn-> 간부 ( "(MyGuests INTO INSERT 이름, 성, 이메일)
VALUES ( '마리아', '모에', '[email protected]') ");
$ Conn-> 간부 ( "(MyGuests INTO INSERT 이름, 성, 이메일)
VALUES ( '줄리', '둘리', '[email protected]') ");
트랜잭션을 커밋 //
$ Conn-> (커밋);
"새로운 레코드가 성공적으로 삽입된다"에코;
}
캐치 (PDOException의 $ 전자)
{
// 롤백이 실패 할 경우
$ Conn-> 롤백 ();
.. 에코 $의 SQL "로 <br>"$ 전자> GetMessage 함수 ();
}
$ 코네티컷 주 = NULL;
?>
$ 서버 이름 = "로컬 호스트";
$ 사용자 이름 = "사용자 이름";
$ 암호 = "암호";
$ DBNAME = "myDBPDO";
{시도
$ 코네티컷 주 = 새로운 PDO ( "MySQL은 : 호스트 = $ 서버 이름, DBNAME = $ DBNAME", $ 이름, $ 암호);
예외에 PDO 오류 모드를 설정 //
$ Conn->의 setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
트랜잭션을 시작 //
$ Conn-> 들어 BeginTransaction ();
// SQL 문
$ Conn-> 간부 ( "(MyGuests INTO INSERT 이름, 성, 이메일)
VALUES ( '존', '미상', '[email protected]') ");
$ Conn-> 간부 ( "(MyGuests INTO INSERT 이름, 성, 이메일)
VALUES ( '마리아', '모에', '[email protected]') ");
$ Conn-> 간부 ( "(MyGuests INTO INSERT 이름, 성, 이메일)
VALUES ( '줄리', '둘리', '[email protected]') ");
트랜잭션을 커밋 //
$ Conn-> (커밋);
"새로운 레코드가 성공적으로 삽입된다"에코;
}
캐치 (PDOException의 $ 전자)
{
// 롤백이 실패 할 경우
$ Conn-> 롤백 ();
.. 에코 $의 SQL "로 <br>"$ 전자> GetMessage 함수 ();
}
$ 코네티컷 주 = NULL;
?>
준비된 문을 사용하여
mysqli 함수는 문장을 삽입하는 두 번째 방법을 제공합니다.
우리는 문과 결합 매개 변수를 준비했다.
MySQL의 확장은 MySQL 데이터베이스에 문이나 쿼리없이 데이터를 전송할 수있다. 당신은 연결 또는 열에 "바인딩"변수 수 있습니다.
예 (준비된 문을 사용하여 mysqli 함수)
<? PHP는
$ 서버 이름 = "로컬 호스트";
$ 사용자 이름 = "사용자 이름";
$ 암호 = "암호";
$ DBNAME = "MYDB";
연결을 생성 //
$ 코네티컷 주 = 새로운 mysqli 함수 ($ 서버 이름, $ 이름, $ 암호, $의 DBNAME);
// 연결 테스트
경우 ($ conn-> connect_error) {
( "연결 실패 :"$ conn-> connect_error.) 다이;
} 그밖에 {
$ SQL은 "MyGuests 값으로 INSERT (,, ???)";
// () 초기화 문 개체를 mysqli_stmt_prepare하려면
$ 됨 Stmt = mysqli_stmt_init ($의 CONN);
// 준비된 문
{(mysqli_stmt_prepare은 ($ stmt에는) SQL을 $) 경우
// 바인딩 매개 변수
mysqli_stmt_bind_param ($ stmt를, 'SSS', $의 FIRSTNAME, $의 LASTNAME, $ 이메일);
// 파라미터 설정 및 수행
$ FIRSTNAME = '존';
$ 성 = '미상';
$ 이메일 = '[email protected]';
mysqli_stmt_execute ($ stmt에);
$ FIRSTNAME = '마리아';
$ 성을 = '모에';
$ 이메일 = '[email protected]';
mysqli_stmt_execute ($ stmt에);
$ FIRSTNAME의 = '줄리';
$ 성을 = '둘리';
$ 이메일 = '[email protected]';
mysqli_stmt_execute ($ stmt에);
}
}
?>
$ 서버 이름 = "로컬 호스트";
$ 사용자 이름 = "사용자 이름";
$ 암호 = "암호";
$ DBNAME = "MYDB";
연결을 생성 //
$ 코네티컷 주 = 새로운 mysqli 함수 ($ 서버 이름, $ 이름, $ 암호, $의 DBNAME);
// 연결 테스트
경우 ($ conn-> connect_error) {
( "연결 실패 :"$ conn-> connect_error.) 다이;
} 그밖에 {
$ SQL은 "MyGuests 값으로 INSERT (,, ???)";
// () 초기화 문 개체를 mysqli_stmt_prepare하려면
$ 됨 Stmt = mysqli_stmt_init ($의 CONN);
// 준비된 문
{(mysqli_stmt_prepare은 ($ stmt에는) SQL을 $) 경우
// 바인딩 매개 변수
mysqli_stmt_bind_param ($ stmt를, 'SSS', $의 FIRSTNAME, $의 LASTNAME, $ 이메일);
// 파라미터 설정 및 수행
$ FIRSTNAME = '존';
$ 성 = '미상';
$ 이메일 = '[email protected]';
mysqli_stmt_execute ($ stmt에);
$ FIRSTNAME = '마리아';
$ 성을 = '모에';
$ 이메일 = '[email protected]';
mysqli_stmt_execute ($ stmt에);
$ FIRSTNAME의 = '줄리';
$ 성을 = '둘리';
$ 이메일 = '[email protected]';
mysqli_stmt_execute ($ stmt에);
}
}
?>
우리는 문제를 처리하는 모듈을 사용하여 위의 예에서 볼 수 있습니다. 우리는 쉽게 읽고 관리를위한 코드 블록을 생성 할 수 있습니다.
바인딩 매개 변수를합니다. 의가) (mysqli_stmt_bind_param에서 코드를 살펴 보자 :
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
바인딩 쿼리에 대한 인수 및 데이터베이스에 매개 변수를 전달합니다. 두 번째 매개 변수는 "SSS"입니다. 다음 목록은 매개 변수의 유형을 보여줍니다. 의 문자는 MySQL의 인수가 문자열 알려줍니다.
그것은 다음과 같은 네 개의 매개 변수 일 수있다 :
- 난 - 정수
- D - 배정도 부동 소수점
- 의 - 문자열
- B - 부울 값
각 파라미터의 타입은 데이터 보안을 보장하기 위해 지정한다. 심판의 유형으로 SQL 주입 취약점의 위험을 줄일 수 있습니다.