【问题标题】:PHP Insert doesn't work anymorePHP插入不再起作用
【发布时间】:2014-06-28 07:31:43
【问题描述】:

我的代码在不久前就可以工作了。实际上,我已经要求测试,它仍然可以在其他电脑上运行。

我格式化了我的,安装了 eclipse、wamp 和 easyphp 以进行仔细检查和所有的东西,现在我遇到了这个问题。

这是一个简单的插入,一个带有 2 个文本框的 HTML,表存在并且它直接由 MySQL 工作台工作。

当我通过浏览器运行脚本时,我在代码中写了一些回显,它启动 ajax,调用 insert.php,并在其中回显在 require_once config.php 之前

之后就没有任何反应了。

我已经在 ajax 调用的错误部分中放置了警报状态和 thown 错误,但什么都没有。

它可能发生了什么?

我使用的是 Windows,我怀疑有更深层次的东西,但这可能是一个明显的错误,我只是不知道在哪里搜索,因为它在其他计算机上也可以。

代码如下:

HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>CRUD</title>
</head>

<body>
<form id="myForm" method="post" action="" >
    Nome:
    <input type="text" name="nome" required />
    <br/>
    Tipo:
    <input type="text" name="tipo" required />
    <br/>


    <input type="submit" name="submit" value="save" id="sub"/> 
</form>

<script src="script/jquery-2.1.0.js" type="text/javascript"></script>
<script src="script/ajaxInclude.js" type="text/javascript"></script>
</body>
</html>

ajax 调用

$(document).ready(function(){
$('#myForm').submit(function(){
    var data = $(this).serialize();

    $.ajax({
        url: "DAO/insert.php",
        type: "POST",
        data: data,
        dataType: "html",
        success: function( data )
        {
            alert( data );
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(thrownError);
        }
    });

    return false;
});
});

config.php

<?php

echo "DENTRO DO CONFIG";

define('HOST', 'localhost');
define('DB_NAME', 'wms');
define('PORT', '3306');
define('USER', 'root');
define('PASS', '');

$dsn = 'mysql:host='.HOST.'; port='.PORT.'; dbname='.DB_NAME;

try {
$bd = new PDO($dsn, USER, PASS);
//  $bd->setAttribute(PDO::ATT_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Houve algum erro no Banco de Dados';
}

?>

插入.php

<?php

echo "FORA DO INSERT";

require_once('config.php');

if(isset($_POST['submit'])){

    echo "DENTRO DO INSERT, SUBMIT POSTED";

 $nome = $_POST['nome'];
 $tipo = $_POST['tipo'];

 $sql =  'INSERT INTO produto(id, nome, tipo, criado_em) ';
 $sql .= ' VALUES (NULL, :nome, :tipo, NOW())';

 try {

    echo "DENTRO DO TRY";
    $query = $bd->prepare($sql);
    $query->bindValue(':nome', $nome, PDO::PARAM_STR);
    $query->bindValue(':tipo', $tipo, PDO::PARAM_STR);

    if($query->execute()){
        echo "Dados inseridos com sucesso";
    }else{
        echo "Falha na insercao de dados";
    }

 } catch (Exception $e) {
    echo $e->getMessage();
 }
 die();
}
?>

【问题讨论】:

  • 请显示一些代码 - 否则无法提供帮助。
  • @Luke Peterson 你去!
  • 你在你的 console.log() 中看到了什么吗?尝试删除 try/catch 块 - 那么它有效吗?
  • @bestprogrammerintheworld 我删除了代码中的所有尝试/捕获,而萤火虫没有告诉我任何事情。我只是在require_once之前得到回声,这个:echo "FORA DO INSERT";

标签: php mysql ajax insert config


【解决方案1】:

在 insert.php 上,更改:

if(isset($_POST['submit'])){

if(isset($_POST['nome']) && isset($_POST['tipo'])){

【讨论】:

  • 并始终检查 $_POST 中的内容。 echo "&lt;pre&gt;"; print_r($_POST);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
相关资源
最近更新 更多