В моем коде есть 2 sql запроса, второй из которых обернут вокруг оператора if, который должен выполняться только при наличии определенного значения post.
Но я все еще получаю следующее сообщение об ошибке:
SQLSTATE [23000]: ограничение целостности
нарушение: 1452 Не удается добавить или обновить
дочерняя строка: ограничение внешнего ключа
не удается (database1
. table2
,
ОГРАНИЧЕНИЕ fk_referals_users1
КЛЮЧЕВОЙ КЛЮЧ (users_id
)
users
(id
) ВКЛ УДАЛИТЬ НЕТ ДЕЙСТВИЙ ВКЛ
ОБНОВЛЕНИЕ НЕТ ДЕЙСТВИЙ)
Ясно, что если бы оператор не работал, если бы он был, он не получил бы второй запрос sql.
Вот проблемный раздел скрипта:
$STH = $DBH -> prepare( "insert into database1.table1 (display_name, email, password) values ( :display_name, :email, :password )" );
$STH -> bindParam( ':display_name', $_POST['display_name'], PDO::PARAM_STR, 100 );
$STH -> bindParam( ':email', $_POST['email'], PDO::PARAM_STR, 100 );
$STH -> bindParam( ':password', $_POST['password'], PDO::PARAM_STR, 100 );
$STH -> execute();
if( isset( $_POST['referer'] ) or ( $_POST['referer'] != null ) or ( $_POST['referer'] != "" ) ) {
$STH = $DBH -> prepare( "insert into database1.table2 ( username, status, users_id ) values ( :username, :status, :users_id )" );
$strStatus = 1;
$STH -> bindParam( ':username', $_POST['display_name'], PDO::PARAM_STR, 100 );
$STH -> bindParam( ':status', $strStatus, PDO::PARAM_INT, 1 );
$STH -> bindParam( ':users_id', $_POST['referer'], PDO::PARAM_INT, 1 );
$STH -> execute();
}