【问题标题】:SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'stock_descr' cannot be null [duplicate]SQLSTATE [23000]:违反完整性约束:1048 列“stock_descr”不能为空 [重复]
【发布时间】:2016-04-06 22:51:32
【问题描述】:

我正在从事库存管理系统项目,我正在使用 JQuery、Php 和 MySql。主页运行良好。每当我尝试编辑现有表格或尝试添加更多库存时都会发生错误。 我在创建时收到此错误消息

Notice: Undefined index: stock_status in C:\xampp\htdocs\stock\create.php on line 14

Notice: Undefined index: date_supplied in C:\xampp\htdocs\stock\create.php on line 15
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'stock_descr' cannot be null

我没有收到 update.php 的错误消息,只是在我运行脚本后它永远不会更新我的表。

这是我的表结构

CREATE TABLE IF NOT EXISTS `stock` (
  `stock_id` tinyint(5) NOT NULL AUTO_INCREMENT,
  `stock_name` varchar(20) NOT NULL,
  `stock_categ` varchar(20) NOT NULL,
  `stock_descr` varchar(50) NOT NULL,
  `stock_comp` varchar(20) NOT NULL,
  `stock_supp` varchar(20) NOT NULL,
  `stock_quan` int(11) NOT NULL,
  `cost` int(11) NOT NULL,
  `stock_status` enum('Available','Inavailable') NOT NULL,
  `date_supplied` date NOT NULL,
  PRIMARY KEY (`stock_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

我将项目添加到表中的代码是 创建.php

<?php
require_once 'dbconfig.php';


    if($_POST)
    {
        $stock_name = $_POST['stock_name'];
        $stock_categ = $_POST['stock_categ'];
        $stock_descr = $_POST['stock_descr'];
        $stock_comp = $_POST['stock_comp'];
        $stock_supp = $_POST['stock_supp'];
        $stock_quan = $_POST['stock_quan'];
        $cost = $_POST['cost'];
        $stock_status = $_POST['stock_status'];
        $date_supplied = $_POST['date_supplied'];

        try{

            $stmt = $db_con->prepare("INSERT INTO stock(stock_name,stock_categ,stock_descr,stock_comp,stock_supp,stock_quan,cost,stock_status,date_supplied) VALUES(:sname, :scateg, :sdescr,:scomp, :ssupp, :squan,:scost, :sstatus, :ssupplied)");
            $stmt->bindParam(":sname", $stock_name);
            $stmt->bindParam(":scateg", $stock_categ);
            $stmt->bindParam(":sdescr", $$stock_descr);
            $stmt->bindParam(":scomp", $stock_comp);
            $stmt->bindParam(":ssupp", $stock_supp);
            $stmt->bindParam(":squan", $stock_quan);
            $stmt->bindParam(":scost", $cost);
            $stmt->bindParam(":sstatus", $stock_status);
            $stmt->bindParam(":ssupplied", $date_supplied);

            if($stmt->execute())
            {
                echo "Successfully Added";
            }
            else{
                echo "Query Problem";
            }   
        }
        catch(PDOException $e){
            echo $e->getMessage();
        }
    }

?>

我在桌子上编辑项目的代码是 更新.php

<?php
require_once 'dbconfig.php';


    if($_POST)
    {
        $id = $_POST['id'];
        $stock_name = $_POST['stock_name'];
        $stock_categ = $_POST['stock_categ'];
        $stock_descr = $_POST['stock_descr'];
        $stock_comp = $_POST['stock_comp'];
        $stock_supp = $_POST['stock_supp'];
        $stock_quan = $_POST['stock_quan'];
        $cost = $_POST['cost'];
        $stock_status = $_POST['stock_status'];
        $date_supplied = $_POST['date_supplied'];

        $stmt = $db_con->prepare("UPDATE stock SET stock_name=:sn, stock_categ=:sc, stock_descr=:sd,stock_comp=:sc,stock_supp=:ss,stock_quan=:sq,cost=:c,stock_status=:ss,date_supplied=:ds WHERE emp_id=:id");
        $stmt->bindParam(":sn", $stock_name);
        $stmt->bindParam(":sc", $stock_categ;
        $stmt->bindParam(":sd", $stock_descr);
        $stmt->bindParam(":sc", $stock_comp);
        $stmt->bindParam(":ss", $stock_supp);
        $stmt->bindParam(":sq", $stock_quan);
        $stmt->bindParam(":c", $cost);
        $stmt->bindParam(":ss", $stock_status;
        $stmt->bindParam(":ds", $date_supplied);
        $stmt->bindParam(":id", $id);

        if($stmt->execute())
        {
            echo "Successfully updated";
        }
        else{
            echo "Query Problem";
        }
    }

?>

这是向表格添加更多项目的表单

<style type="text/css">
#dis{
    display:none;
}
</style>




    <div id="dis">
    <!-- display message here -->
    </div>


     <form method='post' id='stock-SaveForm' action="#">

    <table class='table table-bordered'>

        <tr>
            <td>Stock Name</td>
            <td><input type='text' name='stock_name' class='form-control' placeholder='EX : Piriton' required /></td>
        </tr>

        <tr>
            <td>Category</td>
            <td><input type='text' name='stock_categ' class='form-control' placeholder='EX : Tablet' required></td>
        </tr>

        <tr>
            <td>Description</td>
            <td><input type='text' name='stock_descr' class='form-control' placeholder='EX : Pain Killer' required></td>
        </tr>

        <tr>
            <td>Company</td>
            <td><input type='text' name='stock_comp' class='form-control' placeholder='EX : Dr Mayer' required /></td>
        </tr>

        <tr>
            <td>Supplier</td>
            <td><input type='text' name='stock_supp' class='form-control' placeholder='EX : Akol Pharmacy' required></td>
        </tr>

        <tr>
            <td>Quantity</td>
            <td><input type='text' name='stock_quan' class='form-control' placeholder='EX : 2000' required></td>
        </tr>
        <tr>
            <td>Cost</td>
            <td><input type='text' name='cost' class='form-control' placeholder='EX : 10' required /></td>
        </tr>

        <tr>
            <td>Status</td>
            <td><input type='text' name='stock_status' class='form-control' placeholder='EX : Available/Unavailable' required></td>
        </tr>

        <tr>
            <td>Date Supplied</td>
            <td><input type='text' name='date_supplied' class='form-control' placeholder='EX : 2015-10-10' required></td>
        </tr>

        <tr>
            <td colspan="2">
            <button type="submit" class="btn btn-primary" name="btn-save" id="btn-save">
            <span class="glyphicon glyphicon-plus"></span> Save this Record
            </button>  
            </td>
        </tr>

    </table>
</form>

我的 jquery 是

// JavaScript Document

$(document).ready(function(){

    /* Data Insert Starts Here */
    $(document).on('submit', '#stock-SaveForm', function() {

       $.post("create.php", $(this).serialize())
        .done(function(data){
            $("#dis").fadeOut();
            $("#dis").fadeIn('slow', function(){
                 $("#dis").html('<div class="alert alert-info">'+data+'</div>');
                 $("#stock-SaveForm")[0].reset();
             });    
         });   
         return false;
    });
    /* Data Insert Ends Here */


    /* Data Delete Starts Here */
    $(".delete-link").click(function()
    {
        var id = $(this).attr("id");
        var del_id = id;
        var parent = $(this).parent("td").parent("tr");
        if(confirm('Sure to Delete ID no = ' +del_id))
        {
            $.post('delete.php', {'del_id':del_id}, function(data)
            {
                parent.fadeOut('slow');
            }); 
        }
        return false;
    });
    /* Data Delete Ends Here */

    /* Get Edit ID  */
    $(".edit-link").click(function()
    {
        var id = $(this).attr("id");
        var edit_id = id;
        if(confirm('Sure to Edit ID no = ' +edit_id))
        {
            $(".content-loader").fadeOut('slow', function()
             {
                $(".content-loader").fadeIn('slow');
                $(".content-loader").load('edit_form.php?edit_id='+edit_id);
                $("#btn-add").hide();
                $("#btn-view").show();
            });
        }
        return false;
    });
    /* Get Edit ID  */

    /* Update Record  */
    $(document).on('submit', '#stock-UpdateForm', function() {

       $.post("update.php", $(this).serialize())
        .done(function(data){
            $("#dis").fadeOut();
            $("#dis").fadeIn('slow', function(){
                 $("#dis").html('<div class="alert alert-info">'+data+'</div>');
                 $("#stock-UpdateForm")[0].reset();
                 $("body").fadeOut('slow', function()
                 {
                    $("body").fadeOut('slow');
                    window.location.href="index.php";
                 });                 
             });    
        });   
        return false;
    });
    /* Update Record  */
});

谁能告诉我我应该做的,我没有注意到或我的错误。谢谢

【问题讨论】:

  • $stmt-&gt;bindParam(":sdescr", $$stock_descr); 行中,最后一个$ 是不是太多了?我不习惯那种语言,但这看起来不像代码的其余部分。
  • 感谢您的及时回复,这绝对不应该在那里。我已经对其进行了调整,但错误仍然存​​在。任何解决此问题的建议将不胜感激。再次感谢

标签: php jquery mysql


【解决方案1】:

$stmt-&gt;bindParam(":sdescr", $$stock_descr);

应该是

$stmt-&gt;bindParam(":sdescr", $stock_descr);

【讨论】:

  • 感谢您的及时回复。我现在才注意到,我已经进行了相应的调整,但错误仍然存​​在。你还注意到其他什么吗?再次感谢
  • 确保确实设置了$stock_status$date_supplied 而不是null。还要使 sute 值是从客户端发布的。
  • 未定义的索引通知不会由 $$ 引起。鉴于 OP 的往绩记录,OP 一直在询问有关许多相关问题的问题,并且真诚地怀疑我们是否会在您的答案旁边看到一个绿色勾号。他们没有发布 HTML 表单的事实是这里的主要原因。有人投票重新开放,但我不会重新提出问题。该通知清楚地说明了它失败的原因,从您可能已经注意到的情况来看,它不止一个。
  • 不,但 Integrity constraint violation 是由 $$ 引起的,但您说得对,我们需要 OP 提供更多功能。
  • @Sani Huttunen。再次感谢。请我按照提供的 jquery 以及我的更新表单编辑我的代码。我需要你的归咎于此。这一次,它只是加载而不更新新数据和已编辑数据的任何值。谢谢。
猜你喜欢
  • 2021-02-01
  • 2019-11-20
  • 2021-08-16
  • 2019-10-06
  • 2020-10-25
  • 2017-02-28
  • 2017-04-15
  • 2017-12-26
  • 2019-11-24
相关资源
最近更新 更多