MySQL更新和插入 - 随机不会插入

时间:2014-03-26 14:27:48

标签: php mysql insert

我有一个非常奇怪的问题,我认为这是一个简单的查询。这是几年前我用来学习PHP的代码,并试图将其重新用于非常简单的时间跟踪应用程序。如果时间允许,我将努力使用mysqli制作新版本,但与此同时我只想让它工作。我还在学习,所以这对我来说并不容易。

当表单发布时,我基本上收集数据并尝试1)根据提交的信息更新一个表中的现有值,2)在另一个表中创建一个新行以存储来自前一个表单的所有输入值。

以下是我写的方式:

<?php

    $uid = $_COOKIE["uid"];
    $cid = $_POST['customer_id'];
    $pid = $_POST['project_id'];
    $hoursAdded = $_POST['hoursAdded'];


    mysql_query("UPDATE projects SET hours=hours+'$hoursAdded' 
            WHERE id='$pid'") or die(mysql_error());

    mysql_query("INSERT INTO hours (id,uid,pid,cid,userhours) 
            VALUES ('','$uid','$pid','$cid','$hoursAdded')") 
            or die(mysql_error());        
 ?>

一切正常,但有时SECOND mysql_query语句实际上并没有将任何内容插入到hours表中。第一个查询总是写入,但第二个查询有时只是没有做任何事情 - 没有错误 - 没有。

基本上,HOURS表中提交的小时数总和应该等于项目表中更新的TOTAL小时数。因为第二个查询有时不会写,所以我最终会得到一个项目,例如,200个TOTAL小时,以及HOURS表中该项目的所有小时数总和远小于200.

任何想法发生了什么?为什么有时会写,有时却不写?

如果问题很明显,表示感谢和抱歉。这对我来说还是新的。

1 个答案:

答案 0 :(得分:0)

您有语法错误。试试这个

<?php

    $uid = $_COOKIE["uid"];
    $cid = $_POST['customer_id'];
    $pid = $_POST['project_id'];
    $hoursAdded = $_POST['hoursAdded'];


    mysql_query("UPDATE projects SET hours=hours + $hoursAdded 
            WHERE id=$pid") or die(mysql_error());

    mysql_query("INSERT INTO hours (uid,pid,cid,userhours) 
            VALUES ($uid,$pid,$cid,$hoursAdded)") 
            or die(mysql_error());        
 ?>

我已从mysql_query()内的所有变量中删除了单引号。将单引号添加到变量会生成类型string。我还建议您在查询中插入它们之前检查您定义的php变量是否为空。 我还从id表中删除了hours作为自动增量的设置,因此在查询中没有使用它。添加新行时它会自动递增