Я сначала создал таблицу только с одним первичным ключом, а затем преобразовал еще 1 столбец в первичный ключ, используя:
ALTER TABLE students DROP PRIMARY KEY, ADD PRIMARY KEY(student_id, email);
Составной ключ создан успешно, но составной ключ не работает так, как он должен работать.
При вставке тех же значений электронной почты, но с другой вставкой базы данных идентификатора, значение успешно не дает мне catch
операторов
Я пробовал этот код:
try{
$dbhandler = new PDO('mysql:host=127.0.0.1;dbname=project_db','root','');
$dbhandler->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$sql="insert into students (student_id,faculty,password,cpi,first_name,last_name,birthdate,email,contact_no,participate,leader,allocated) values (?,?,?,?,?,?,?,?,?,?,0,0)"; // leader is 0 means not decided
$query=$dbhandler->prepare($sql);
$p=0;
if(isset($_POST['s_participate']))
{
$p=1;
}
$r=$query->execute(array($_POST['s_id'],$_SESSION['faculty'],$_POST['s_id'],$_POST['s_cpi'],$_POST['s_f_name'],$_POST['s_l_name'],$_POST['s_birthday'],$_POST['s_email'],$_POST['s_contact'],$p));
}
catch(PDOException $e){
$msg='student with this id is already exist';
$temp=1;
header("location:./insert_student.php?msg=".$msg);
}
if($r){
header("location:./insert_student.php?msg=Student ".$_POST['s_f_name']." with id ".$_POST['s_id']." is successfully added");
}