2014-02-16 5 views
2

У меня проблема с запросом SQL-запроса в мою базу данных. Я проверил соединение с базой данных и, похоже, работает нормально. Когда я отправляю форму, я не получаю сообщение об ошибке, и кажется, что он вставляет строки в мою таблицу, но ничего не происходит.Ошибка ввода в MySQL MySQL без ошибок

Это код для структуры таблицы:

CREATE TABLE IF NOT EXISTS `***`.`employee` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(45) NULL, 
    `email` VARCHAR(45) NULL, 
    PRIMARY KEY (`id`)) 
ENGINE = InnoDB; 

Обновленный код employee.php файла, который призван с помощью панели управления:

<?php 

    error_reporting(E_ALL); 
    ini_set('display_errors', true); 

    if(isset($_POST['register'])){ 
    $dbhost = '****'; 
    $dbuser = '****'; 
    $dbpass = '****'; 
    $dbname = '****'; 
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass); 

    if(!$conn){ 
     die(mysqli_error()); 
    } 
    mysqli_select_db($conn, $dbname); 

    $email = $_POST['email']; 
    $name = $_POST['fullname']; 

    $sql = "INSERT INTO `employee` (`email`,`name`) VALUES ('$email','$name')"; 

    mysqli_query($conn, $sql) or die(mysqli_error()); 

    mysqli_close($conn); 

    else{ 
?> 


    <form id="regForm" method="post" action="<?php $_PHP_SELF ?>"> 
     <input type="text" id="fullname" name="fullname" placeholder="Full Name" /> 
     <input type="text" id="email" name="email" placeholder="E-mail" /> 
     <input name="register" type="submit" id="register" value="Register" ></button> 
    </form> 


<?php } ?> 

У меня также есть JQuery скрипт, который изменяет содержимое и может вызвать проблемы:

$(document).ready(function() { 
    $('ul#cpnav li a').click(function() { 
    var page = $(this).attr('href'); 
    $('#cpcon').load('../cp/' + page + '.php'); 
    return false; 
    }); 
}); 

Это html для панели управления, и работник кнопки на панели управления, которая содержит ссылки на форму регистрации:

<ul id="cpnav"> 
<li><a href="employee">Add Employee</a></li>  
</ul> 
+0

Я попытался Mysqli Aswell, но я до сих пор один и тот же вопрос. – slopedoo

+0

Подождите, куда подает форму? Если '$ _PHP_SELF' не установлен в' employee.php', ничего не произойдет. Установлен ли '$ _PHP_SELF'? Вы даже не «эхо» – Phil

ответ

0

Я предполагаю, что атрибут действия вашей формы все виды неправильно и учитывая то, как вы инъекционные формы на страницу, вы не сможет правильно управлять значением из сценария employee.php.

Вот что я хотел бы сделать ...

  1. Игнорировать атрибут action в сценарии (то есть, оставьте это поле пустым)

    <form id="regForm" method="post" action=""> 
    
  2. Исправить форму действия в JavaScript

    var page = $(this).attr('href'), 
        path = '../cp/' + page + '.php'; 
    $('#cpcon').load(path, function() { 
        $('#regForm').attr('action', path); 
    }); 
    

Теперь, скорее всего, это сработает, потому что ваш оператор INSERT выполнит (возможно). Однако вы увидите только пустую страницу. Вы можете перенаправить на страницу успеха или что-то после успешного обновления базы данных.


Теперь позвольте мне рассказать вам о prepared statements ...

$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname); 
if ($conn->errno) { 
    throw new Exception($conn->error, $conn->errno); 
} 

$stmt = $conn->prepare('INSERT INTO `employee` (`email`, `name`) VALUES (?, ?)'); 
if (!$stmt) { 
    throw new Exception($conn->error, $conn->errno); 
} 
$stmt->bind_param('ss', $_POST['email'], $_POST['name']); 
if (!$stmt->execute()) { 
    throw new Exception($stmt->error, $stmt->errno); 
} 

// here's where you would do some sort of redirect 
header('Location: success.php?employee_id=' . $conn->insert_id); 
exit; 
Смежные вопросы