>백엔드 개발 >PHP 튜토리얼 >MySQL 데이터베이스에 여러 확인란 및 텍스트 상자 배열을 삽입하는 방법: 일반적인 문제 해결

MySQL 데이터베이스에 여러 확인란 및 텍스트 상자 배열을 삽입하는 방법: 일반적인 문제 해결

Patricia Arquette
Patricia Arquette원래의
2024-10-30 11:10:121051검색

  How to Insert Multiple Checkbox and Textbox Arrays into a MySQL Database: Addressing Common Issues

MySQL 데이터베이스에 여러 확인란 및 텍스트 상자 배열 삽입: 일반적인 문제 해결

여러 확인란 및 텍스트 상자 배열과 관련된 쿼리는 PHP에서 문제를 일으킬 수 있습니다. 이 문서에서는 두 가지 구체적인 문제, 즉 체크박스가 선택되지 않은데도 선택된 것으로 표시되는 이유와 데이터가 데이터베이스에 삽입되지 않는 이유를 다룹니다.

체크박스 표시 문제

범인은 모든 체크박스 값이 쉼표로 구분된 문자열을 생성하는 implode의 사용입니다. 이 접근 방식은 특정 확인란의 선택 여부에 관계없이 전체 목록을 모든 데이터베이스 행에 잘못 삽입합니다.

이를 수정하려면 양식 HTML의 확인란 이름에 명시적인 색인을 할당하세요. 이렇게 하면 $_POST['checkbox'] 배열의 해당 체크박스 값은 implode에 의존하지 않고도 함께 제공되는 $_POST['item'] 및 $_POST['quantity'] 요소와 쉽게 관련될 수 있습니다.

데이터베이스 삽입 실패

체크박스는 체크된 항목에 대한 값만 제출한다는 점에서 또 다른 문제가 발생합니다. 이로 인해 $_POST['checkbox'] 배열의 인덱스와 해당 $_POST['item'] 및 $_POST['quantity'] 요소가 일치하지 않습니다.

이 문제를 해결하려면 다음을 활용하세요. 수정된 형식의 확인란 이름에 할당된 인덱스입니다. 이를 통해 적절한 값 쌍이 가능해 데이터베이스의 각 행에 올바른 데이터 집합이 포함되도록 할 수 있습니다.

또한 mysql_query를 사용하는 대신 $conn->query() 메서드를 사용하세요. 데이터베이스 연결에 사용되는 MySQLi API와 일치합니다.

업데이트된 PHP 코드:

<br>$stmt = $conn->prepare(" INSERT INTO 구매(제품, 수량, 가격) VALUES (?, ?, ?)");<br>$stmt->bind_param("sis", $name, $quantity, $price);<br>foreach ( $_POST['checkbox'] $i => $price) {</p>
<pre class="brush:php;toolbar:false">$name = $_POST['name'][$i];
$quantity = $_POST['quantity'][$i];
$stmt->execute();

}

추가 보안 조치

보안 예방 조치로 일반적으로 가격을 HTML에 저장하는 대신 데이터베이스에서 검색하는 것이 좋습니다. 이렇게 하면 사용자가 양식을 제출하기 전에 웹 검사기에서 가격을 수정하는 것을 방지할 수 있습니다.

위 내용은 MySQL 데이터베이스에 여러 확인란 및 텍스트 상자 배열을 삽입하는 방법: 일반적인 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.