다음은 3 단계로 수행 할 작업입니다.PHP에서 explode 함수 사용 및 for 루프를 사용하여 데이터베이스에 삽입
1) 양식에서 이름을 가져옵니다. 이름은 사이에 쉼표를 사용하여 양식에 입력됩니다.
2) 데이터베이스에서 이름의 ID를 가져옵니다.
3-) 이러한 이름을 테이블에 삽입하십시오.
내가 원하는 것을 분명히하기를 바랍니다.
여기까지 제가 한 일입니다.
$writer_name = "Franz Kafka, Agatha Christie, George Bernard Shaw"; // I used a
//variable instead of using a form value here
$thing_id = 10;
$values_select = explode(",", $writer_name);
echo $values_select[0]; // returns Franz Kafka, our explode function worked
$who = "SELECT writer_id FROM writer_name WHERE writer_name = '$values_select[]'";
// I stuck here, I need to get all the writer's ID's and store it in an array
// in order to insert below X times (depends on how many writers are entered), right? But how?
$who_result = $sqli->query($who);
$who_row = $who_result->fetch_array();
$who_finish = $who_row['writer_id'];
$values = explode(",", $writer_name);
$control = count($values) - 1;
$new_values = $sqli->prepare("INSERT INTO book(thing_id, person_id) VALUES(?,?)");
for ($i = 0; $i < count($values); $i++) {
if (!empty(trim($values[$i]))) {
$new_values .= "('" . trim($values[$i]) . "')";
}
if ($control == $i) {
$new_values .= ";";
} else $new_values .= ",";
}
$thing->bind_param("ii", $thing_id, $values[$i]); // using integer because I insert data into a junction table that accepts only ID values)
$thing->execute();
WHERE writer_name IN ($ writer_name) IN 쉼표로 구분 된 목록을 전달하면 writer_name이 목록에있는 레코드를 반환합니다. 예 : http : //www.techonthenet.com/sql/in.php –
또한 SQL은 생각보다 훨씬 강력합니다. 대부분의 PHP 코드는 버려지고 작업은 DB로 오프로드됩니다. –
'... = '$ values_select []''은 "불가능"코드입니다. 당신은 리터럴 쿼리 텍스트'... = 'Array []''을 생성하고 있습니다. 아무 것도 일치하지 않을 것입니다. –