PHP에서 MySQL에 데이터를 보내는 방법
다음 코드는 매우 간단한 HTML 형식입니다.
");
print("등록 양식을 작성해 주셔서 감사합니다");
?>
본문>
< /html>
코드의 세 번째 줄에 있는 "사용자 이름"과 "비밀번호"는 각각 MySQL 데이터베이스에 로그인하기 위한 계정 번호와 비밀번호를 나타냅니다. 다섯 번째 줄의 "dbname"은 MySQL 데이터베이스의 이름을 나타냅니다. 13행의 "tablename"은 데이터베이스에 있는 테이블의 이름입니다.
제출을 누르면 입력한 이름이 새 페이지에 표시되는 것을 볼 수 있습니다. 브라우저의 URL 표시줄을 다시 살펴보세요. 내용은 다음과 같습니다.
… /submitform.php3?first_name=Fred&last_name=플린트스톤
form GET 방식을 사용하고 있기 때문에 URL을 통해 submitform.php3으로 데이터가 전송됩니다. 당연히 GET 방식은 한계가 있다. 전송할 내용이 많은 경우에는 GET 방식을 사용할 수 없고 POST 방식만 사용할 수 있다. 그러나 어떤 방법을 사용하든 데이터 전송이 완료되면 PHP는 해당 이름(양식의 이름 속성)과 동일한 양식의 각 필드에 대해 자동으로 변수를 생성합니다.
PHP 변수는 모두 달러 기호로 시작합니다. 이런 식으로 submitform.php3 스크립트를 처리하는 동안 $first_name과 $last_name이라는 두 개의 변수가 입력됩니다.
입력한 이름이 실제로 데이터베이스에 입력되었는지 확인해 보겠습니다. MySQL을 시작하고 mysql> 프롬프트에 다음을 입력하세요.
mysql> 테이블 이름에서 * 선택;
방금 입력한 내용이 포함된 테이블을 얻을 수 있습니다.
+----------------+----------------+
| 이름 | 성
+----------------+----------------+
루펑
|
+----------------+----------------+
1행 세트(0.00초)
submitform.php3의 작동 방식을 분석해 보겠습니다.
스크립트의 처음 두 줄은 다음과 같습니다.
mysql_connect(로컬호스트, 사용자 이름, 비밀번호)
mysql_select_db(데이터베이스 이름)
이 두 함수 호출은 MySQL 데이터베이스를 여는 데 사용됩니다. 특정 매개변수의 의미는 방금 언급되었습니다.
다음 줄은 SQL 문을 실행합니다.
mysql_query("INSERT INTO 테이블 이름(이름, 성)
VALUES ('$first_name', '$last_name')
");
mysql_query 함수는 선택한 데이터베이스에 대해 SQL 쿼리를 실행하는 데 사용됩니다. mysql_query 함수에서 모든 SQL 문을 실행할 수 있습니다. 실행할 SQL 문은 문자열로서 큰따옴표로 묶어야 하며, 그 안에 있는 변수는 작은따옴표로 묶어야 합니다.
한 가지 주의할 점이 있습니다. MySQL 문은 세미콜론(;)으로 끝나야 하며, PHP 코드 라인의 경우에도 마찬가지입니다. 그러나 PHP 스크립트의 MySQL 문에는 세미콜론을 사용할 수 없습니다. 즉, mysql> 프롬프트에서 MySQL 명령을 입력할 때 세미콜론을 추가해야 합니다.
INSERT INTO 테이블 이름(이름, 성)
VALUES('$first_name', '$last_name')
그러나 이 명령이 PHP 스크립트에 나타나면 세미콜론을 제거해야 합니다. 그 이유는 SELECT 및 INSERT와 같은 일부 문이 세미콜론을 사용하거나 사용하지 않고 작동하기 때문입니다. 그러나 세미콜론을 추가하면 작동하지 않는 UPDATE와 같은 일부 명령문이 있습니다. 문제를 피하려면 이 규칙을 기억하세요.
PHP를 사용하여 MySQL에서 데이터를 추출하는 방법
이제 이 작업을 수행하기 위해 또 다른 HTML 양식을 만듭니다.
<본문>
< 양식 액션=searchform.php3 메소드=GET>
검색어를 입력하세요:
성: < 입력 유형=텍스트 이름=이름_크기=25 최대 길이=25>
이름: < 입력 유형=텍스트 이름=성 이름 크기=25 최대 길이=25>
<입력 유형=제출>
< /양식>
본문>
< /html>
마찬가지로 이 양식을 처리하는 PHP 스크립트도 있습니다. searchform.php3 파일을 만들어 보겠습니다.
<본문>
mysql_connect(로컬호스트, 사용자 이름, 비밀번호)
mysql_select_db(데이터베이스 이름)
if ($first_name == "")
{$first_name = '%';}
if ($last_name == "")
{$last_name = '%';}
$result = mysql_query ("SELECT * FROM 테이블 이름
first_name LIKE '$first_name%'
AND 성 LIKE '$last_name%'
");
if ($row = mysql_fetch_array($result)) {
{
하세요
$row["first_name"] 인쇄
인쇄(" ");
$row["last_name"] 인쇄
인쇄("
");
} while($row = mysql_fetch_array($result))
} else {print "죄송합니다. 데이터베이스에서 일치하는 기록을 찾을 수 없습니다.";}
?>
본문>
< /html>
검색하려는 콘텐츠를 양식에 입력하고 SUBMIT 버튼을 누르면 일치하는 모든 검색 결과가 나열된 새 페이지로 들어갑니다. 이 스크립트가 검색 작업을 완료하는 방법을 살펴보겠습니다.
이전 명령문은 위에서 언급한 것과 동일합니다. 먼저 데이터베이스 연결을 설정한 다음 데이터베이스 및 데이터 테이블을 선택합니다. 이는 모든 데이터베이스 응용 프로그램에 필요합니다. 그러면 다음과 같은 몇 가지 진술이 있습니다.
if ($first_name == "")
{$first_name = '%';}
if ($last_name == "")
{$last_name = '%';}
이 줄은 양식의 각 필드가 비어 있는지 확인하는 데 사용됩니다. 두 개의 등호에 주의하십시오. 왜냐하면 대부분의 PHP 구문은 C 언어에서 파생되었으며 여기에서 등호의 사용법도 C와 동일합니다. 하나의 등호는 할당 기호이고 두 개의 등호는 논리를 나타냅니다. 평등. 또한, IF 뒤의 조건이 true인 경우 이후에 실행될 명령문은 "{", "}" 안에 들어가며, 각 명령문 뒤에는 세미콜론을 추가하여 명령문의 끝을 표시해야 한다는 점도 주의해야 합니다.
백분율 기호 %는 SQL 언어의 와일드카드 문자입니다. 한 가지 사항을 이해한 후에는 다음 두 줄의 의미를 알아야 합니다. "FIRST_NAME" 필드가 비어 있으면 모든 FIRST_NAME이 나열됩니다. 다음 두 문장은 같은 의미를 가지고 있습니다.
$result = mysql_query ("SELECT * FROM 테이블 이름
first_name LIKE '$first_name%'
AND 성 LIKE '$last_name%'"
");
이 줄은 대부분의 검색 작업을 수행합니다. mysql_query 함수는 쿼리를 완료하면 정수 플래그를 반환합니다.
쿼리는 모든 레코드에서 first_name 열이 $first_name 변수와 동일하고 last_name 열과 $last_name 변수 값도 동일한 레코드를 선택하여 임시 레코드 세트에 넣고 반환된 정수를 다음과 같이 사용합니다. 이 기록 세트의 표시입니다.
if ($row = mysql_fetch_array($result)) {
{
하세요
$row["first_name"] 인쇄
인쇄(" ");
$row["last_name"] 인쇄
인쇄("
");
} while($row = mysql_fetch_array($result))
} else {print "죄송합니다. 데이터베이스에서 일치하는 기록을 찾을 수 없습니다.";}
마지막 단계인 디스플레이 부분입니다. mysql_fetch_array 함수는 먼저 쿼리 결과의 첫 번째 행의 내용을 추출한 후 PRINT 문을 사용하여 표시합니다. 이 함수의 매개변수는 mysql_query 함수가 반환하는 정수 플래그입니다. mysql_fetch_array가 성공적으로 실행되면 레코드 세트 포인터가 자동으로 아래로 이동하므로 mysql_fetch_array가 다시 실행될 때 다음 레코드 행의 내용을 가져옵니다.
배열 변수 $row는 mysql_fetch_array 함수에 의해 생성되고 쿼리 결과 필드로 채워집니다. 배열의 각 구성 요소는 쿼리 결과의 각 필드에 해당합니다.
일치하는 레코드가 발견되면 변수 $row는 비어 있지 않으며 중괄호 안의 명령문이 실행됩니다.
{
하세요
$row["first_name"] 인쇄
인쇄(" ");
$row["last_name"] 인쇄
인쇄("
");
} while($row = mysql_fetch_array($result))
이것은 do ... while 루프입니다. while 루프와의 차이점은 먼저 루프 본문을 실행한 다음 루프 조건이 충족되는지 확인한다는 것입니다. 레코드 세트가 비어 있지 않으면 루프 본문이 적어도 한 번 실행되어야 한다는 것을 이미 알고 있으므로 while 루프 대신 do...while을 사용해야 합니다. 중괄호 안의 내용은 실행할 루프의 본문입니다.
$row["first_name"] 인쇄
인쇄(" ");
$row["last_name"] 인쇄
인쇄("
");
다음 단계는 while 조건이 충족되는지 확인하는 것입니다. 현재 레코드의 내용을 가져오기 위해 Mysql_fetch_array 함수가 다시 호출됩니다. 이 프로세스는 계속 반복됩니다. 다음 레코드가 없으면 mysql_fetch_array가 false를 반환하고 루프가 종료되며 레코드 세트가 완전히 탐색됩니다.
mysql_fetch_array($result)가 반환하는 배열은 필드 이름으로 호출할 수 있을 뿐만 아니라 일반 배열처럼 첨자로 참조할 수도 있습니다. 이런 식으로 위 코드를 다음과 같이 작성할 수도 있습니다.
$row[0] 인쇄
인쇄(" ");
$row[1] 인쇄
인쇄("
");
echo 함수를 사용하여 이 네 가지 명령문을 더 간결하게 작성할 수도 있습니다.
echo $row[0], " ", $row[1], "< p>"
일치하는 레코드가 없으면 $row에 내용이 없으며 if 문의 else 절이 호출됩니다.
else {print "죄송합니다. 데이터베이스에서 일치하는 기록을 찾을 수 없습니다.";}
위 내용은 PHP에서 MySQL로 데이터를 보내는 방법과 관련된 내용을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.