Как добавить в sql-запрос определенные значения элементов массива?
<?php
//так же у каждого типа в массиве свое уникальное свойство
$seedEntries = [
[
'full_name' => 'John Norton',
'phone' => '0946565656',
'email' => '[email protected]',
'role' => 'student',
'averange_mark' => 4.5
],
[
'full_name' => 'Ben Simons',
'phone' => '0935557687',
'email' => '[email protected]',
'role' => 'teacher',
'subject' => 'English'
],
[
'full_name' => 'Nike Sun',
'phone' => '0935985634',
'email' => '[email protected]',
'role' => 'administrator',
'working_day' => 'monday'
]
];
?>
<?php if($seedEntries['role'] === 'student') {/* свойство студента */} ?>
<?php if($seedEntries['role'] === 'teacher') {/* свойство учителя */} ?>
<?php if($seedEntries['role'] === 'administrator') {/* свойство администратора */} ?>
<?php
// добавляется только один тип данных, пытался добавит проверку if, но четно. Может неверно
foreach($seedEntries as $data) {
$sql = "INSERT INTO members SET
full_name ='". $data['full_name'] ."',
role ='". $data['role'] ."',
subject ='". $data['subject'] ."',
averange_mark ='". $data['averange_mark'] ."',
working_day ='". $data['working_day'] ."'
";
$db->exec($sql);
}
?>
Ответы (2 шт):
Автор решения: Jug-IT
→ Ссылка
<?php
// массив значений имеет роли со своими уникальными свойствами
$seedEntries = [
[
'full_name' => 'John Norton',
'phone' => '0946565656',
'email' => '[email protected]',
'role' => 'student',
'averange_mark' => 4.5
],
[
'full_name' => 'Ben Simons',
'phone' => '0935557687',
'email' => '[email protected]',
'role' => 'teacher',
'subject' => 'English'
],
[
'full_name' => 'Nike Sun',
'phone' => '0935985634',
'email' => '[email protected]',
'role' => 'administrator',
'working_day' => 'monday'
]
];
// в зависимости от роли, добавляется уникальное свойство
foreach($seedEntries as $data) {
$averange_mark = NULL;
$subject = NULL;
$working_day = NULL;
if($data['role'] == 'student') {
$averange_mark = $data['averange_mark'];
} elseif($data['role'] == 'teacher') {
$subject = $data['subject'];
} elseif($data['role'] == 'administrator') {
$working_day = $data['working_day'];
}
$sql = "INSERT INTO members SET
full_name ='". $data['full_name'] ."',
role ='". $data['role'] ."',
averange_mark = '". $averange_mark ."',
subject = '". $subject ."',
working_day = '". $working_day ."'
";
$db->exec($sql);
}
?>
Автор решения: Bebe
→ Ссылка
<?php
foreach($seedEntries as $data){
switch($data['role']){
case 'student':
try{
$sql = "INSERT INTO members SET
full_name ='". $data['full_name'] ."',
phone='" . $data['phone'] . "',
email='" . $data['email'] . "',
role ='". $data['role'] ."',
averange_mark= {$data['averange_mark']};";
$db->exec($sql);
}catch(Exception $exception){
die('Error');
};
break;
case 'teacher':
try{
$sql = "INSERT INTO members SET
full_name ='". $data['full_name'] ."',
phone='" . $data['phone'] . "',
email='" . $data['email'] . "',
role ='". $data['role'] ."',
subject='".$data['subject']."'";
$db->exec($sql);
}catch(Exception $exception){
die('Error');
};
break;
case 'administrator':
try{
$sql = "INSERT INTO members SET
full_name ='". $data['full_name'] ."',
phone='" . $data['phone'] . "',
email='" . $data['email'] . "',
role ='". $data['role'] ."',
working_day='".$member['working_day']."'";
$db->exec($sql);
}catch(Exception $exception){
die('Error');
};
break;
}
}