php - MySQL 插入查询失败,没有错误

标签 php jquery mysql ajax insert

我对数据库的 SQL 插入查询有问题。我已经检查了与数据库的连接,它似乎工作正常。当我提交表单时,我没有收到任何错误消息,它似乎将行插入到我的表中,但没有任何反应。

这是表结构的代码:

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>

最佳答案

我的猜测是您的表单的 action 属性有各种错误,并且鉴于您将表单注入(inject)页面的方式,您将无法从 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;

关于php - MySQL 插入查询失败,没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21815576/

相关文章:

php - 基于 PHP 函数调用的新闻源重新排序

php - Instagram 屏蔽了网站的 IP?

javascript - 异步编程是否意味着多线程?

javascript - 如何缩放到 iframe 响应中的特定元素?

带词干的 MySQL 全文

php - 使用 explode() 删除

PHP Composer 脚本不会触发

php - 请将 SQL 查询与 PHP 帮助合并

php -/n 的对面? - ESC/POS 和 PHP 右/左对齐在同一行

jQuery - 在继续之前执行函数