나는 체크 박스와 MySQL DB가 포함 된 PHP 폼을 다루고있다. 마침내 배열을 반복하면서 각 선택된 항목에 대해 하나씩 여러 행을 삽입 할 수있었습니다.
하지만 이제는 또 다른 문제에 직면해야합니다. DB에서 하나의 선택 사항 질문을 저장하는 하나의 주 테이블과 확인란의 답을 저장하는 또 다른 테이블이 있습니다.
하나의 선택적인 답을 주 테이블 (양식 당 하나의 행)에 삽입하는 쿼리를 먼저 실행하여 일련 ID를 생성하고 싶습니다.
둘째,이 ID를 가져와이 ID를 통해 두 테이블을 연결하기 위해 체크 박스 테이블에 삽입 된 모든 행에이 ID를 연결합니다.
그게 가능합니까? 어떻게해야합니까? 여기에 PHP 부분
외래 키를 사용하여 PHP 폼의 데이터를 MySQL DB에 삽입하는 방법은 무엇입니까?
<input type="checkbox" name="nature_contact[]" value="1"><label >Phone</label><br/>
<input type="checkbox" name="nature_contact[]" value="2"><label >Mail</label><br/>
<input type="checkbox" name="nature_contact[]" value="3"><label >Visit</label><br/>
<input type="checkbox" name="nature_contact[]" value="4"><label >Unk</label> <br/><br/>
<input type="text" name="coord"/>
<br/>
<input type="text" name="tel"/>
<br/><br/>
<input type="submit" name="add" value="SEND"/>
그리고 :
여기에 HTML 코드
try {
if(isset($_POST['add'])){
if(isset($_POST['coord'])) {
$coord=$_POST['coord'];
}
else { $coord = '';
}
if(isset($_POST['tel'])) {
$tel=$_POST['tel'];
}
else { $tel = '';
}
$query="INSERT INTO nmp_mfs.general (coord, tel) VALUES ('".$coord."', '".$tel."')";
$statement_gnl = $pdo->prepare($query);
$statement_gnl->execute();
}
}
catch(PDOException $e) {
$msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
die($msg);
}
try {
if(isset($_POST['add'])){
if(isset($_POST['nature_contact'])) {
$sql = "INSERT INTO nmp_mfs.t_temporaire (nature_contact) VALUES ".rtrim(str_repeat('(?),', count($_POST["nature_contact"])), ',');
$statement = $pdo->prepare($sql);
$count = 1;
foreach($_POST["nature_contact"] as $nature_contact) {
$statement->bindValue($count++, $nature_contact);
}
$statement->execute();
}
}
}
catch(PDOException $e) {
$msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
die($msg);
}
감사합니다. 나는 (최대 ID)로 시도했지만 lastInsertId()가 훨씬 더 안정적이다. 그러나,이 값을 함수에 추가해야합니다 : .rtrim (str_repeat ('(?),', count ($ _ POST [ "nature_contact"])), ','), 그리고 이것은 까다 롭습니다. str_repeat ('($ lastID,?)')로 시도했지만 $ lastID의 값 대신 문자열을 반환합니다. 해결할 수 있습니까? – RemiC
! 인용문을 잊어 버렸습니다 : str_repeat ('('. '$ lastID ',?),' – RemiC