У вас там происходит несколько странностей ...
$sql = "INSERT INTO dbEntry ('forename','surname','email','address1','address2','terms')
VALUES ('$forename','$surname','$email','$address1','$address2','$terms')" or die(mysql_error());
На самом деле не имеет смысла - вы присваиваете значение строке и говорите программе умереть (с помощьюmysql_error ()), если строка пуста - die () должен отражать ответ от функции mysql_query () - вы хотите, чтобы он умер, когда эта функция возвращает false.Да, и как указал @Michael - не заключайте имена полей в кавычки (апострофы) - при необходимости используйте обратные метки.
if ($results) { echo "Details added."; }
$_SESSION['status'] = 'success';
Это означает, что вы будете отображать только "Детали добавлены" если запрос выполняется успешно - однако вы присваиваете 'success' для $ _SESSION ['status'], даже если запрос не выполняется.
Я бы попробовал что-то похожее на следующее;Я добавил некоторые escape-коды - на всякий случай, если вы их пропустили :) Так как PHP свободно набирает пустые строки и (int) 0 можно оценить как (bool) false - так что !$forename
будет эквивалентно $forename == ''
.
$forename = mysql_real_escape_string($forename);
$surname = mysql_real_escape_string($surname);
$email = mysql_real_escape_string($email);
$address1 = mysql_real_escape_string($address1);
$address2 = mysql_real_escape_string($address2);
$terms = (int) $terms;
if(!$forename || !$surname || !$email || !$address1 || !$address2 || !$terms) {
$_SESSION['status'] = 'error';
}
else {
$sql = "INSERT INTO dbEntry(forename, surname, email, address1, address2, terms) "
. "VALUES ('{$forename}', '{$surname}', '{$email}', '{$address1}', '{$address2}', {$terms})";
$response = mysql_query($sql);
if(!$response) {
die(mysql_error());
}
else {
echo "Details added";
$_SESSION['status'] = 'success';
}
}