2014-02-16 145 views
2

我有一個SQL插入查詢到我的數據庫的問題。我檢查了與數據庫的連接,它似乎工作正常。當我提交表單時,我沒有收到任何錯誤消息,並且它似乎將行插入到我的表中,但沒有任何反應。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的藏漢,但我仍然有同樣的問題。 – slopedoo

+0

等待,表單提交到哪裏?如果'$ _PHP_SELF'沒有設置爲'employee.php',則不會發生任何事情。是否設置了$ _PHP_SELF?你甚至不會「迴應」它 – Phil

回答

0

我的猜測是,你的表單的action屬性是各種錯誤,並給你如何注射的形式進入的頁面,你將無法從employee.php腳本正確控制值。

這裏就是我會做...

  1. 忽略腳本中action屬性(即,留空)

    <form id="regForm" method="post" action=""> 
    
  2. 修復了在JavaScript

    表單動作 ​​

現在,這可能會起作用,因爲您的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;