我有一个非常奇怪的问题,我认为这是一个简单的查询。这是几年前我用来学习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.
任何想法发生了什么?为什么有时会写,有时却不写?
如果问题很明显,表示感谢和抱歉。这对我来说还是新的。
答案 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
作为自动增量的设置,因此在查询中没有使用它。添加新行时它会自动递增