이 기사에서는 PHP를 사용하여 MySQL 데이터베이스에 행을 삽입하는 방법을 살펴보겠습니다.

1단계 - 테이블 생성

먼저 데이터에 대한 테이블을 생성해야 합니다. 수행할 수 있는 간단한 절차입니다. phpMyAdmin 사용호스팅 제어판에서

phpMyAdmin에 로그인하면 다음과 같은 인터페이스가 표시됩니다.

"Create Table" 버튼을 클릭하여 u266072517_name 데이터베이스에 Students라는 테이블을 생성해 보겠습니다. 그 후에 우리는 볼 것입니다 새 페이지, 필요한 모든 테이블 매개 변수를 설정합니다.

이것은 table과 get에 사용할 수 있는 가장 간단한 설정입니다. 추가 정보테이블/데이터베이스의 구조에 대해

열 옵션:

  • 이름은 테이블 맨 위에 표시되는 열의 이름입니다.
  • 유형은 열의 유형입니다. 예를 들어, 문자열 값을 입력할 것이기 때문에 varchar를 선택했습니다.
  • 길이/값 - 이 열의 항목이 가질 수 있는 최대 길이를 지정하는 데 사용됩니다.
  • 색인 - "ID" 필드에 "기본" 색인을 사용했습니다. 테이블을 생성할 때 기본 키로 하나의 열만 사용하는 것이 좋습니다. 테이블의 레코드를 나열하는 데 사용되며 테이블을 설정할 때 필요합니다. 또한 레코드 수(1,2,3,4...)를 자동으로 할당하는 옵션인 "Auto Increment"를 의미하는 "A_I"를 표시했습니다.
    저장 버튼을 클릭하면 테이블이 생성됩니다.

2단계. MySQL에 데이터를 삽입하기 위한 PHP 코드 작성.

옵션 1 - MySQLi 방법

먼저 데이터베이스에 대한 연결을 설정해야 합니다. 그 후 우리는 사용 SQL INSERT 쿼리. 전체 코드 예:

" . mysqli_error($conn); ) mysqli_close($conn); ?>

코드의 첫 번째 부분(라인 3 - 18)은 데이터베이스에 연결하기 위한 것입니다.

19번째 줄부터 시작하겠습니다.

$sql = "INSERT INTO 학생(이름, 성, 이메일) VALUES("Thom", "Vial", " [이메일 보호됨]")";

그녀는 데이터를 MySQL 데이터베이스. INSERT INTO는 지정된 테이블에 데이터를 추가하는 명령문입니다. 이 예에서는 데이터가 Students 테이블에 추가됩니다.

다음은 이름, 성, 이메일 값이 삽입되는 열의 열거입니다. 데이터는 지정된 순서로 추가됩니다. (이메일, 성, 이름) 작성했다면 값이 다른 순서로 추가되었을 것입니다.

다음 부분은 VALUES 문입니다. 여기서 우리는 열의 값을 지정합니다. name = Thom, lastname = Vial, email = [이메일 보호됨]

PHP 코드를 사용하여 쿼리를 실행했습니다. 에 프로그램 코드 SQL 쿼리는 따옴표로 이스케이프해야 합니다. 코드의 다음 부분(라인 20-22)은 요청이 성공했는지 확인합니다.

if (mysqli_query($conn, $sql)) ( echo "새 레코드가 성공적으로 생성됨"; )

이 코드는 요청이 성공했다는 메시지를 표시합니다.

마지막 부분(라인 22 - 24)은 요청이 성공하지 못한 경우 알림을 표시합니다.

else ( echo "오류: " . $sql . "
" .mysqli_error($conn); )

옵션 2 - PHP 데이터 개체 메서드(PDO)

먼저 새 PDO 개체를 만들어 데이터베이스에 연결해야 합니다. 그것으로 작업할 때, 우리는 사용할 것입니다 다양한 방법 PDO. 객체 메서드는 다음과 같이 호출됩니다.

$the_Object->the_Method();

PDO를 사용하면 실행되기 전에 SQL 코드를 "준비"할 수 있습니다. SQL 쿼리는 실행되기 전에 평가되고 "수정"됩니다. 예를 들어, 가장 간단한 SQL 주입 공격은 단순히 SQL 코드를 양식 필드에 입력하여 수행할 수 있습니다. 예를 들어:

이것은 구문상 올바른 SQL이므로 세미콜론은 DROP DATABASE user_table을 새 SQL 쿼리로 만들고 사용자 테이블을 삭제합니다. 준비된 표현식(바인드 변수)은 세미콜론과 따옴표로 원래 쿼리를 종료할 수 없으므로 DROP DATABASE 명령이 실행되지 않습니다.

준비된 문을 사용하려면 데이터베이스 객체의 prepare() 메서드를 호출하는 새로운 변수를 작성해야 합니다.

올바른 코드:

getMessage(); ) // 데이터베이스에 추가할 사람에 대한 변수 설정 $first_Name = "Thom"; $last_Name = "약병"; $이메일 = " [이메일 보호됨]"; // 데이터베이스 객체의 prepare() 메소드를 호출하는 변수 생성 // 실행하고자 하는 SQL 쿼리를 파라미터로 입력하고 placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare( "INSERT INTO Students ( name, lastname, email) VALUES (:first_name, :last_name, :email)"); // 이제 bindParam() 메서드를 사용하기 위해 각 자리 표시자가 참조하는 변수를 스크립트에 알립니다. // 첫 번째 매개변수는 위 명령문의 자리 표시자이고 두 번째 매개변수는 참조해야 하는 변수 $my_Insert_Statement->bindParam(:first_name, $first_Name); (:email, $email); // 방금 정의한 데이터를 사용하여 쿼리를 실행합니다. // execute() 메서드는 성공하면 TRUE를 반환하고 성공하지 못하면 FALSE를 반환하며, if ($my_Insert_Statement ->execute()) ( echo "새 기록 rdcreated성공적으로"; ) else ( echo "Unable to createrecord"; ) // 이 시점에서 변수 데이터를 변경하고 쿼리를 실행하여 데이터베이스 데이터에 더 많은 데이터를 데이터베이스에 추가할 수 있습니다. $first_Name = "John"; $last_Name = "스미스"; $이메일 = " [이메일 보호됨]"; $my_Insert_Statement->execute(); // 변수가 변경되면 다시 실행 if ($my_Insert_Statement->execute()) ( echo "New recordcreatedsuccessfully"; ) else ( echo "기록을 생성할 수 없음";

28, 29, 30행에서 데이터베이스 객체의 bindParam() 메서드를 사용합니다. 또한 이전과 매우 다른 bindValue() 메서드가 있습니다.

  • bindParam() - 이 메서드는 execute() 메서드에 도달할 때 데이터를 평가합니다. 스크립트가 처음 execute() 메서드에 도달하면 $first_Name이 "Thom"과 일치함을 확인합니다. 그런 다음 해당 값을 바인딩하고 쿼리를 실행합니다. 스크립트가 두 번째 execute() 메서드에 도달하면 $first_Name이 이제 "John"과 일치함을 확인합니다. 그런 다음 이 값을 바인딩하고 새 값으로 쿼리를 다시 실행합니다. 한 번 쿼리를 정의하고 스크립트의 다른 지점에서 다른 데이터와 함께 재사용한다는 것을 기억하는 것이 중요합니다.
  • bindValue() - 이 메서드는 bindValue()에 도달하는 즉시 데이터를 평가합니다. $first_Name이 "Thom"으로 설정되었기 때문에 bindValue()에 도달하면 $my_Insert_Statement의 execute() 메서드가 호출될 때마다 사용됩니다.
    $first_Name 변수를 재사용하고 두 번째로 새 값을 할당한다는 점에 유의하십시오. 스크립트를 실행한 후 스크립트 끝에 있는 $first_Name 변수에 "John" 값이 있음에도 불구하고 두 이름이 모두 데이터베이스에 나열됩니다. PHP는 실행하기 전에 전체 스크립트를 확인한다는 것을 기억하십시오.

bindParam을 bindValue로 바꾸도록 스크립트를 업데이트하면 데이터베이스에 "Thom Vial"을 두 번 삽입하고 John Smith는 무시됩니다.

3단계 - 성공 확인 및 문제 해결

데이터베이스에 행 삽입 요청이 성공하면 다음 메시지가 표시됩니다.

일반적인 오류 문제 해결

MySQLi

다른 경우에는 오류 메시지가 표시됩니다. 예를 들어 코드에서 하나의 구문 오류를 만들고 다음을 얻습니다.

코드의 첫 번째 부분은 괜찮고 연결은 성공적으로 설정되었지만 SQL 쿼리는 실패했습니다.

"오류: INSERT INTO 학생(이름, 성, 이메일) VALUES("Thom", "Vial", " [이메일 보호됨]") SQL 구문에 오류가 있습니다. "(이름, 성, 이메일) VALUES("Thom", "Vial", " [이메일 보호됨]")" 행 1"

스크립트를 실패하게 만든 구문 오류가 있습니다. 오류는 다음과 같습니다.

$sql = "INSERT INTO 학생(이름, 성, 이메일) VALUES("Thom", "Vial", " [이메일 보호됨]")";

일반 중괄호 대신 중괄호를 사용했습니다. 이것은 올바르지 않으며 스크립트에서 구문 오류가 발생했습니다.

PDO

PDO 연결의 7행에서 오류 모드는 "모든 예외 표시"로 설정됩니다. 다른 값이 설정되어 요청이 실패하면 오류 메시지가 수신되지 않습니다.

이 설정은 스크립트를 개발할 때만 사용해야 합니다. 활성화하면 데이터베이스 및 테이블 이름이 표시될 수 있으며 보안상의 이유로 숨겨져 있는 것이 가장 좋습니다. 위에서 설명한 경우 일반 대괄호 대신 중괄호를 사용하면 오류 메시지가 다음과 같이 표시됩니다.

치명적인 오류: "SQLSTATE: 구문 오류 또는 액세스 위반: 1064 SQL 구문에 오류가 있습니다. "(이름, 성, 이메일) VALUES("Thom", "Vial", " [이메일 보호됨]")" 행 1"

기타 가능한 문제:

  • 열이 잘못 지정되었습니다(존재하지 않는 열 또는 이름의 철자 오류).
  • 한 유형의 값이 다른 유형의 열에 할당됩니다. 예를 들어, 이름 열에 숫자 47을 삽입하려고 하면 오류가 발생합니다. 이 열은 문자열 값을 사용해야 합니다. 그러나 따옴표 안에 숫자를 지정하면(예: "47") 문자열이므로 작동합니다.
  • 존재하지 않는 테이블에 데이터를 입력하려고 했습니다. 테이블 이름의 철자 오류도 있습니다.

데이터를 성공적으로 입력하면 데이터베이스에 추가되었음을 알 수 있습니다. 다음은 데이터가 추가된 테이블의 예입니다.

작성자:오, 당신은 노래에서 단어를 버릴 수 없습니다! 그러나 다른 사람이 삭제, 업데이트 또는 삽입할 수 있습니다. 가장 중요한 것은 단어가 데이터베이스에 입력된다는 것입니다. 오늘 우리는 MySQL에 데이터를 쓰는 방법과 노래가 들리도록 올바르게 하는 방법을 알려줄 것입니다!

phpMyAdmin으로 항목 추가

MySQL DBMS를 관리하기 위한 phpMyAdmin 셸은 데이터베이스 테이블에 새 레코드를 추가하기 위한 "경량" 기능을 구현합니다. 단순하기 때문에 친환경 "인형" 및 "게으른" 전문가 모두에게 이상적입니다.

새로운 정보를 테이블에 입력하려면 관리자 권한으로 프로그램에 들어가야 합니다. 그런 다음 왼쪽 목록에서 원하는 데이터베이스와 테이블을 선택합니다. 그런 다음 상단 메뉴에서 "삽입" 항목으로 이동합니다.

그 후, MySQL 데이터베이스에 레코드를 만들기 위해 "값" 필드의 모든 열에 대해 다음 창을 채우고 하단의 "확인"을 클릭합니다.

위의 스크린샷은 수정된 테이블 "Animals"가 id와 name이라는 두 개의 열(필드)로 구성되어 있음을 보여줍니다. 두 번째 섹션은 각 열의 유형을 지정합니다. id 열이 기본 키이고 테이블이 생성될 때 자동 증분으로 설정되었기 때문에 이름 필드에 값만 입력하면 됩니다. 이것은 id 필드의 값이 이전 정수 값에 1을 추가하여 MySQL에 의해 자동으로 생성됨을 의미합니다.

MySQL에서 데이터 레코드의 어떤 필드가 기본 키(기본 키)인지 알아보려면 phpMyAdmin에서 최상위 메뉴 탭 "구조"의 메뉴(목록에서 왼쪽에 선택된 테이블이 있음)로 이동합니다. 다음은 테이블의 모든 필드, 해당 유형 및 추가 특성에 대한 설명입니다.

SQL 쿼리를 사용하여 데이터 삽입

그러나 phpMyAdmin은 래퍼일 뿐이며 실제 관리자는 Structured Query Language를 사용하여 MySQL 서버와 "대화"합니다. 즉, 그들은 SQL 언어로 그와 "대화"합니다. 우리는 진정한 전문가가 되기 위해 노력하고 있기 때문에 고려 중인 주제의 프레임워크 내에서 SQL 명령 연구에 대해 조금 "다이어트"할 것입니다. 다음은 동일한 데이터베이스를 생성할 "SQL" 필드를 입력하는 쿼리입니다.

CREATE TABLE 동물(id MEDIUMINT NOT NULL AUTO_INCREMENT, 이름 CHAR(30) NOT NULL, PRIMARY KEY(id));

CREATE TABLE 동물(ID MEDIUMINT NOT NULL AUTO_INCREMENT,

이름 CHAR(30) NOT NULL, 기본 키(ID));

테이블을 생성하고 MySQL 데이터베이스에 데이터를 쓴 후("삽입" 탭을 통해) 프로그램은 식별자 값이 1인 행이 동물에 추가되었음을 알려줍니다. 그리고 편집기 창에서 약간 아래에 있는 쉘이 우리를 위해 생성하고 데이터베이스 서버로 보낸 쿼리 코드가 표시됩니다.

요청 코드:

INSERT INTO `my_db1`.`animal` (`id`, `name`) VALUES (NULL, "Cat");

INSERT INTO ` my_db1` . ` 동물 ` (` id ` , ` name ` ) VALUES (NULL , "고양이" ) ;

더 자세히 연구해 봅시다. SQL은 INSERT 문을 사용하여 테이블에 새 행을 삽입합니다. 데이터베이스 테이블(my_db1 . animal)에서 id 및 name 필드(VALUES(NULL, 'Cat')에 지정된 값을 삽입해야 함을 서버에 알립니다.

이 필드에 대해 자동 완성(자동 증가)을 "활성화"했기 때문에 id 열에 숫자 값을 지정하지 않고 NULL을 지정합니다.

PHP를 사용하여 게시물을 삽입하는 방법

우리가 고려한 모든 것은 "His Highness" 서버 측 프로그래밍 언어 PHP가 장면에 들어가는 주요 작업의 "전주곡"에 불과합니다. DBMS로서의 MySQL이 웹에서 널리 보급된 것은 그 덕분입니다.
World Wide Web의 상당 부분은 이 두 가지 인터넷 기술을 기반으로 합니다. 현대 CMS, "자체 작성" 엔진 및 서버 등 어디에서나 찾을 수 있습니다.

PHP가 MySQL에 데이터를 쓰기 위한 많은 내장 함수를 제공한다는 것은 놀라운 일이 아닙니다. 그러나 우리는 그들 중 가장 중요한 것에 집중할 것입니다. 다음은 Animals 테이블에 새로운 "animal"을 추가하는 코드입니다. 열심히 노력하면 이런 식으로 전체 동물원을 수집 할 수 있습니다 :)

$con_str=mysql_connect("로컬호스트", "루트", "", "db1"); if(mysql_connect("localhost","root"))( echo "안녕하세요!!"; ) mysql_select_db("db1",$con_str); $query_str="INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, "dog")"; mysql_query($query_str); mysql_close();

$ con_str = mysql_connect("localhost" , "루트" , "" , "db1" ) ;

if (mysql_connect("localhost" , "root" ) ) (

echo "안녕하세요!!" ;

mysql_select_db("db1" , $ con_str ) ;

$query_str= "INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, "dog")";

mysql_query($query_str) ;

mysql_close();

이 코드는 PHP 파일에 붙여넣고 서버 측에서 호스팅해야 합니다.

mysql_connect() 함수를 사용하여 MySQL 데이터베이스 서버에 연결합니다. 이 함수는 호스트, DBMS 사용자 이름, 암호 및 연결할 데이터베이스 이름을 인수로 사용합니다. 로컬(클라이언트) 시스템에 설치된 서버를 사용하고 있기 때문에 비밀번호가 비어 있습니다.

PHP를 사용하여 MySQL 데이터베이스에 작성하는 모든 설명된 예제를 보여주기 위해 Denver의 "gentleman's kit"를 사용했습니다. 여기에는 로컬 Apache 서버, MySQL 서버, phpMyAdmin 및 기타 몇 가지 유용한 코딩 및 테스트 도구가 포함됩니다.

그런 다음 논리적 if 블록에서 데이터베이스 서버에 대한 연결을 확인했습니다. 그런 다음 mysql_select_db() 함수에서 연결할 베이스를 지정했습니다. mysql_query() 함수를 사용하여 $query_str 변수에 작성된 SQL 쿼리를 시작했습니다. 그리고 마지막에 설정된 연결이 닫혔습니다(mysql_close() 함수). 이제 우리의 동물원(테이블 동물)을 살펴보면 그곳에서 새로운 "애완동물"을 발견할 것입니다.

MySQL에서 작성하기 위해 PHP는 "친절하게" 필요한 모든 기능 세트를 제공했습니다. 프로그램 코드에서 SQL을 사용할 때 초보자가 "소진"하는 주요 사항은 쿼리의 잘못된 철자, 구문 위반 및 이스케이프(따옴표)를 위한 문자 교체입니다.

머리에 여분의 "회색" 머리카락이 나타나는 것을 방지하려면 phpMyAdmin을 사용하여 요청의 올바른 철자를 확인하는 것이 좋습니다. 이렇게 하려면 프로그램 편집기에 SQL 코드를 배치하고 실행을 위해 실행합니다. 문제가 있는 경우 응용 프로그램은 "맹세"를 시작하고 빨간색 메시지를 표시하고 오류 위치를 나타냅니다.

보시다시피 MySQL의 도움으로 동물원을 "수집"하고 "노래"의 단어를 올바르게 변경할 수 있습니다. 그리고 MySQL 데이터베이스에 쓰기 위해 PHP는 완벽하므로 이 "훌륭한" 프로그래밍 언어와 "가까운" 친구 관계를 맺을 것을 권장합니다!

그리고 주어진
. 이제 우리는 방법에 대해 이야기 할 것입니다 PHP를 사용하여 양식을 통해 MySQL 데이터베이스에 이미지 추가.

이미지를 추가하기 위해 MySQL 데이터베이스에 필드 생성

우선 이렇게 말하고 싶습니다. MySQL 데이터베이스에 이미지 저장 BLOB 유형에서 파생된 테이블의 필드 중 하나를 정의해야 합니다.

약어 BLOB는 Binary Large Object를 나타냅니다. BLOB 데이터 스토리지 유형에는 다음과 같은 몇 가지 옵션이 있습니다.

  • TINYBLOB - 최대 255바이트까지 저장할 수 있습니다.
  • BLOB는 최대 64KB의 정보를 저장할 수 있습니다.
  • MEDIUMBLOB - 최대 16MB
  • LONGBLOB 최대 4GB

을 위한 데이터베이스에 이미지 파일 저장파일을 변수로 읽어들이고 테이블에 데이터를 추가하기 위한 쿼리를 생성해야 합니다.

MySQL 데이터베이스에 이미지를 추가하기 위해 페이지에서 양식 준비

제 경우에는 작업이 PHP를 사용하여 양식을 통해 데이터베이스에 두 개의 이미지 추가. 두 개의 필드와 제출 버튼이 있는 양식이 있습니다.

양식 이름="form1" 방법="게시" 작업="add_image.php"
enctype="다중 파트/양식 데이터"

속성을 기억하십시오. 동작이미지 파일을 로드할 파일을 지정합니다. 기인하다 인코딩양식 콘텐츠가 인코딩되는 방법과 파일 업로드에 대한 정보를 지정합니다. 속성을 올바르게 채우는 방법 보기 인코딩피하기 위해 .

메모:여러 파일 업로드에 대한 지원은 버전 3.0.10에서 도입되었습니다.

이미지를 MySQL 데이터베이스에 저장하는 PHP 코드 작성

속성에 두 개의 파일을 보내기 때문에 이름단어 뒤에 "userfile"을 대괄호로 표시합니다. 이를 통해 파일 속성이 포함된 배열을 사용하여 여러 파일을 보내고 있음을 분명히 합니다.

$_FILES['사용자 파일']['이름']

클라이언트 시스템의 원래 파일 이름입니다.

$_FILES['사용자 파일']['유형']

브라우저가 이 정보를 제공한 경우 파일의 mime 유형입니다.
예: "이미지/gif" .

$_FILES['사용자 파일']['크기']

$_FILES['사용자 파일']['tmp_name']

업로드된 파일이 서버에 저장된 임시 파일 이름입니다.

각 파일의 값을 얻는 방법은 무엇입니까?

예를 들어 /home/test/1.jpg 및 /home/test/2.jpg라는 파일이 전송되었다고 가정합니다.

이 경우 $_FILES['userfile']['name']
1.jpg 값을 포함합니다.
및 $_FILES['userfile']['이름']
- 값 2.jpg

마찬가지로 $_FILES['userfile']['size']에는 파일 크기 값 1.jpg가 포함됩니다. 이제 form 속성에 지정된 add_image.php 파일의 코드를 고려하십시오. 동작.

1024*1024||$image_size==0) ( $ErrorDescription="각 이미지는 1Mb를 넘지 않아야 합니다! 이미지는 데이터베이스에 추가할 수 없습니다."; return ""; ) // 파일이 도착했다면 확인 그래픽 // (보안상의 이유로) if(substr($_FILES["userfile"]["type"][$num], 0, 5)=="image") ( //파일 내용 읽기 $image=file_get_contents($_FILES ["userfile"]["tmp_name"][$num]); //파일 내용의 특수 문자 이스케이프 $image=mysql_escape_string($image); return $image; )else( ErrorDescription=" 이미지를 업로드하지 않아 추가할 수 없습니다."; return ""; ) )else( $ErrorDescription="이미지를 업로드하지 않았으며 필드가 비어 있어 파일을 데이터베이스에 추가할 수 없습니다. "; 반환 ; ) 반환 $ 이미지; ) ?>

그래서 이 기사에서는 MySQL 데이터베이스에 이미지를 저장하는 방법에 대해 이야기했습니다. , PHP를 사용하여.

마지막 업데이트: 2015년 1월 11일

데이터를 추가하기 위해 "INSERT" 표현식이 사용됩니다:

$query ="INSERT INTO 상품 VALUES(NULL, " 삼성 갤럭시 III","삼섬")";

"INSERT" 문은 테이블에 한 행을 삽입합니다. 후에 예어 INTO는 테이블의 이름을 지정하고 VALUES 뒤에 모든 열에 대한 값 집합이 괄호 안에 지정됩니다. 테이블에 세 개의 열이 있으므로 세 개의 값을 지정합니다.

이전 항목에서 테이블을 생성할 때 id, name, company 열 순서를 지정했기 때문에 이 경우 id 열에는 NULL, 이름에는 "Samsung Galaxy III", 회사에는 "Samsumg"가 전달됩니다. .

id 열이 AUTO_INCREMENT로 정의되어 있기 때문에 특정 숫자 값을 지정할 필요가 없으며 NULL 값을 전달할 수 있으며 MySQL은 열에 다음 사용 가능한 값을 할당합니다.

이제 예제를 사용하여 데이터를 추가하는 방법을 살펴보겠습니다. 파일을 만들어보자 생성.php다음 내용으로:

추가된 데이터"; ) // 연결 종료 mysqli_close($link); ) ?>

새 모델 추가

모델 입력:

제조사:

여기에서 데이터베이스와 상호 작용하기 위한 코드는 양식의 기능과 결합됩니다. 양식을 사용하여 데이터베이스에 추가할 데이터를 입력합니다.

보안 및 MySQL

여기서 우리는 mysqli_real_escape_string() 함수를 사용했습니다. SQL 쿼리에서 사용되는 문자열의 문자를 이스케이프하는 역할을 합니다. 연결 개체와 이스케이프할 문자열을 매개 변수로 사용합니다.

따라서 우리는 실제로 문자 이스케이프를 두 번 사용합니다. 첫 번째는 mysqli_real_escape_string() 함수를 사용하는 sql 표현식에 대해 사용하고 다음으로 htmlentities() 기능을 사용하는 html에 대해 사용합니다. 이를 통해 XSS 공격과 SQL 주입이라는 두 가지 유형의 공격으로부터 한 번에 자신을 보호할 수 있습니다.

블로그에서 옮겨온 댓글

세르게이
2016년 9월 14일 01시 25분
안녕하세요!
이 질문에 관심이 있습니다. 데이터베이스를 사용하지 않고 데이터 및 프로그램 설정의 저장을 구성하는 가장 쉬운 방법은 무엇입니까? MySQL이나 Access에 묶이고 싶지 않습니다.

관리자
2016년 9월 14일 22시 14분
안녕하세요!

속성.설정
앱 구성
XML 파일
직렬화
목록에서 이들 중 하나를 선택하십시오.

니콜라이
2016년 9월 16일 02시 28분
안녕하세요, dataGridVIew 및 phpMyAdmin에서 dataGridVIew의 강조 표시된 행을 어떻게 삭제할 수 있습니까?

PhpMyAdmin? 이것은 데이터베이스 작업을 위한 쉘일 뿐입니다. 설명할 수 있습니까?

니콜라이
2016년 9월 18일 02시 24분
DataGridView와 데이터베이스에서 선택한 행을 삭제해야 합니다.

관리자
2016년 9월 19일 07:00시
데이터베이스에서 행을 삭제하는 방법 mysql 데이터기사를 추가했습니다.

니콜라이
2016년 9월 20일 09시 20분
정말 감사합니다.

디마
2016년 9월 20일 10시 24분
안녕하세요, 할 수 있습니까? 이 방법 DataGridView가 아니라 ComboBox를 통해 구현하려면? 그렇다면 어떻게? 고맙습니다.

관리자
2016년 9월 22일 03시 21분
여보세요. 예시:

겐나디
2016년 9월 22일 18시 25분
왜 그런 텍스트를 데이터베이스 System.Windows.Forms.TextBox에 추가해야 하나요? Text: ge

그건 그렇고, 이것은 마지막에 (ge) 텍스트가 테이블 설정에 지정되어 있음에도 불구하고 유전자에 의해 작성됩니다. 유전자의 단어가 더 적합해야하므로이 테이블을 내 프로그램에 표시하고 회전합니다. 이 모든 불필요한 텍스트를 표시합니다.

관리자
2016년 9월 24일 04:17
SQL 쿼리가 잘못 작성되었을 가능성이 높습니다. 예를 들면 다음과 같습니다.

textBox1에 Gene라는 이름을 입력합니다.

SQL 쿼리: "테이블 이름 값에 삽입(textBox1, ..)"; 결과: System.Windows.Forms.TextBox

그리고 다음을 전달해야 합니다. "Insert into table name values(textBox1.Text, ..)";
결과: 제나

겐나디
2016년 9월 24일 18시 41분
그렇군요. 감사

세르게이
2016년 9월 25일 11시 51분
여보세요. 그리고 textBox를 통해 데이터베이스에 추가를 구현하는 방법은 무엇입니까?

관리자
2016년 9월 26일 20시 53분
모든 것은 원칙적으로 동일합니다. 예를 들어 가장 최근의 예를 들어 보겠습니다. 다음이 필요합니다.

//매개변수를 생성하고 컬렉션에 추가 cmd.Parameters.AddWithValue("@Name", textBox1.Text); cmd.Parameters.AddWithValue("@LastName", textBox2.Text);

이제 매개변수: Name 및 LastName은 텍스트 상자에 입력된 값을 수신하여 데이터베이스에 전달합니다.

리나라
2016년 9월 27일 17시 45분
안녕하세요, dataGridVIew 및 phpMyAdmin에서 강조 표시된 행은 어떻습니까?

관리자
2016년 9월 29일 02:06
phpMyAdmin에서 행을 선택하는 방법을 모르겠습니다. 예를 들어 dataGridView에서 SelectionChanged 이벤트를 사용하여 이 작업을 수행할 수 있습니다.

PSH
2016년 9월 30일 03:48
2리나라:
정말로 행을 편집하려면 HediSQL이라는 도구를 사용하여 행을 조정하고 수정하십시오.

2관리자
좋은 날! 자료에 감사드립니다 - 모든 것이 매우 멋지게 명시되어 있습니다)
질문: 다음 요청으로 데이터를 추가합니다(테스트용입니다).

String sql = "INSERT INTO users(`FIO`, `Tour`, `Count`, `Cost`, `Date`, `Passport`, `Birth`) VALUES("Kolyan", "Moscow", "1+1 ", 1100, "2011-11-11", "1111 1111", "11/9/1900");";

데이터는 모두 정상적으로 입력되지만 데이터베이스(mysql)에서는 키릴 자모가 아닌 "????"로 나타납니다.

비주얼 스튜디오 System.String이 유니코드 시퀀스라고 말합니다.

또한 시도:

ALTER DATABASE `테스트` COLLATE "koi8r_general_ci"; ALTER TABLE `사용자` COLLATE="koi8r_general_ci"; ALTER DATABASE `테스트` COLLATE "utf8_unicode_ci"; ALTER TABLE `사용자` COLLATE="utf8_unicode_ci";

하지만 도움이되지 않습니다..
무엇이 잘못될 수 있습니까? 다른 VS 및 DB 인코딩? 또는 무엇을?
읽을/변경할 내용을 보낼 수 있습니다.
감사

관리자
2016년 10월 10일 09:49에서
여보세요.

DB(및 테이블)에서 utf_general_ci 데이터 정렬

그런 비교가 있습니까? 아마도 utf8_general_ci?

일반적으로 utf8_general_ci 비교를 선택하여 Mysql 데이터베이스를 생성하므로 서버가 클라이언트로부터 버그를 수신하지 않는 한 키릴 문자에는 문제가 없습니다.

COLLATION은 비교를 위해 사용되지만 이 경우 인코딩(charset)이 중요합니다. 따라서 먼저 latin1이 아닌 utf8과 같이 서버에서 올바르게 설정되어 있는지 확인해야 합니다.

.net 커넥터를 통해 연결할 때(기본적으로) latin1이 사용되므로 연결 문자열에서 utf8 인코딩을 명시적으로 지정해야 하는 경우가 있습니다.

MySqlConnection mycon; mycon = 새로운 MySqlConnection("서버=127.0.0.1;uid=vasya;pwd=123;database=test;Charset=utf8;"); //MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8";

PSH
2016년 1월 10일 11시 34분
당신이 옳습니다, utf8_general_ci!
네, 도움이 되었습니다. ;Charset=utf8;
매우 감사합니다!

세르지오
2016년 2월 10일 11시 2분
작업 예제에 감사드립니다. 의문
데이터베이스의 IP 주소를 입력하고 싶은 텍스트 필드를 만들었는데 여기에 이 ​​데이터를 대체하는 방법을 모르겠습니다

문자열 conStr = " [이메일 보호됨];사용자=테스트;" +
"데이터베이스=테스트;비밀번호=테스트;";
이 디자인에 Windows 양식의 텍스트 필드에서 데이터를 삽입하는 방법을 알려주세요....

관리자
2016년 3월 10일 11시 50분
"[이메일 보호됨];사용자=...
일반적으로 이 기사에서와 같이 이러한 문자열이나 String.Format() 메서드 대신 속성을 사용하는 것이 좋습니다.

올가2203
2017년 5월 15일 20시 14분

문자열 연결 = "서버=127.0.0.1; 포트=3306; 데이터베이스=베이스; 데이터 소스=localhost; 사용자=루트;"; MySqlConnection con = 새로운 MySqlConnection(연결); con.Open(); //데이터베이스에 대한 연결을 설정합니다. MySqlCommand cmd = 새로운 MySqlCommand(); cmd.CommandText = @”INSERT INTO tovar(ID,Category,Name,TradeMark,Price,Photo,Size,Color,Mategory,Count) VALUES(@pr, @Category, @Name, @TradeMark, @Price, @Photo, @크기, @색상, @재료, @카운트)”; cmd.Parameters.AddWithValue("@pr",카운터); cmd.Parameters.AddWithValue("@Category", comboBox1.SelectedItem.ToString()); cmd.Parameters.AddWithValue("@이름", textBox1.Text); cmd.Parameters.AddWithValue(“@TradeMark”, textBox2.Text); cmd.Parameters.AddWithValue("@Price", Convert.ToInt32(textBox4.Text)); cmd.Parameters.AddWithValue(“@Photo”, textBox3.Text); cmd.Parameters.AddWithValue("@크기", textBox6.Text); cmd.Parameters.AddWithValue("@Color", textBox5.Text); cmd.Parameters.AddWithValue("@Material", textBox8.Text); cmd.Parameters.AddWithValue("@Count", Convert.ToInt32(textBox7.Text)); cmd.Connection = con; cmd.ExecuteNonQuery(); MessageBox.Show("추가 성공", "추가 성공", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

"컬럼 'ID'는 null일 수 없습니다" 오류가 발생하고 ID 컬럼에 대한 추가를 제거합니다. 다음 컬럼에 대해서도 동일하게 작성됩니다.
VALUES에 대괄호 안에 상수 값을 입력하면 밑줄에 선이 추가됩니다.
말해 주세요, 문제가 무엇입니까? 양식을 통해 입력한 데이터와 값을 정확히 데이터베이스에 써야 합니다.