동적 입력 배열에 대한 null 값 삽입
PHP 버전 7.1.9 사용, MariaDB 10.1.26.
양식 데이터 배열을 MySQL 데이터베이스에 제출합니다.이 양식을 사용하면 동적 입력을 추가할 수 있습니다. 동적 입력을 추가하면 다음과 같이 나타납니다.
// I have removed additional html form code for brevity
<input type="text" name="mac[]">
<input type="text" name="mac[]">
<input type="text" name="mac[]">
etc...
때때로 이러한 입력이 비어 있을 수 있습니다. 이는 허용됩니다.입력이 비어 있으면 다음을 삽입합니다.NULL데이터베이스에 값을 입력합니다.여기가 제가 문제를 겪고 있는 곳입니다.
데이터베이스 테이블이 다음과 같이 설정되어 있는지 확인합니다.
- null 허용 = 예
- default - null입니다.
양식 제출을 처리하기 위한 나의 PHP 코드는 아래와 같습니다(간체화된 코드인 보안 취약점은 무시하십시오);
// I have removed additional php code for brevity
$arr_mac = $_POST['mac'] ? "'".$_POST['mac']."'" : 'NULL';
for ($i = 0; $i < count($arr_mac); $i++) {
$sql = "INSERT INTO staff (mac) VALUES ( ".$arr_mac[$i]." )
}
수신되는 오류는 다음과 같습니다.
SQLSTATE[42000]:구문 오류 또는 액세스 위반: 1064 SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 올바른 구문을 확인하십시오.
내가 할 때var_dump(mac)알겠습니다;
[mac] => Array
(
[0] =>
[1] =>
[2] =>
)
만약 내가 PHP를 다음과 같이 변경한다면 (추가 사항에 주의하세요.' ') 삽입에서 쿼리가 성공적으로 실행되지만 대신null가치,empty값이 데이터베이스에 삽입됩니다.
$arr_mac = $_POST['mac'] ;
for ($i = 0; $i < count($arr_mac); $i++) {
$sql = "INSERT INTO staff (mac) VALUES (' ".$arr_mac[$i]." ')
}
어떤 조언이든 감사합니다.
잘못된 구문으로 쿼리를 작성하신 것 같습니다.주어진 코드를 사용하여,INSERT다음과 같이 보일 수 있습니다.
INSERT INTO staff (mac) VALUES ()
코드가 다음을 처리하지 않습니다.NULL대/소문자 구분 - 변수가 다음으로 설정됨NULL리터럴을 사용하지 않습니다.NULL쿼리를 작성하기 위해.
이는 다음과 같은 도움이 될 수 있습니다.
$arr_mac = $_POST['mac'] ? "'".$_POST['mac']."'" : 'NULL';
for ($i = 0; $i < count($arr_mac); $i++) {
$value = $arr_mac[$i];
if(!$value) {
$value = 'NULL';
} else {
$value = your_favorite_escaping_algorithm($value);
}
$sql = "INSERT INTO staff (mac) VALUES ( ". $value ." )";
}
이것은 특정한 것을 쓰는 데 도움이 됩니다.NULL구문적으로 올바른 쿼리에 필요한 값
$arr_mac = $_POST['mac'] ;
$batchInsert = array();
for ($i = 0; $i < count($arr_mac); $i++) {
if( "" == trim($arr_mac[$i])) {
$arr_mac[$i] = 'NULL';
}
$batchInsert = array_push($arr_mac[$i]);
}
$insertValues = implode("','", $batchInsert)
$sql = "INSERT INTO staff (mac) VALUES ('$batchInsert')";
***임플로드 함수를 사용하여 ' 및 , 형성 확인
이렇게 하면 단일 INSERT 문에 N개의 값이 삽입되어 훨씬 빠르게 실행됩니다!
언급URL : https://stackoverflow.com/questions/52738597/inserting-null-values-for-dynamic-inputs-array
'programing' 카테고리의 다른 글
| AJAX에서 중첩된 FormData 전송 (0) | 2023.08.31 |
|---|---|
| Docker CMD를 여러 번 사용하여 여러 서비스를 실행할 수 없는 이유는 무엇입니까? (0) | 2023.08.31 |
| VBA에서 이벤트 수신기를 프로그래밍 방식으로 생성 (0) | 2023.08.31 |
| Swift에서 동일한 키에 대한 여러 값을 포함하는 쿼리 매개 변수로 URL을 작성하려면 어떻게 해야 합니까? (0) | 2023.08.31 |
| MVC4 StyleBundle이 이미지를 확인하지 않음 (0) | 2023.08.31 |