PHP mysql查询代码无法正常工作

时间:2011-01-01 14:41:19

标签: php mysql sql

此代码无效原因:(

$id = $temp['curchar'];
$data=strtotime(date('Y-m-d H:i:s'))+30; //+30 seconds to unix time
mysql_query("UPDATE `chars` SET data='$data' WHERE id='$id'");

警告:mysql_error():提供的参数不是第23行的C:\ Program Files \ WebServ \ httpd \ world_1 \ char_info_slow.php中的有效MySQL-Link资源

2 个答案:

答案 0 :(得分:1)

太多问题,您可以从检查

开始
  1. 你如何连接到mysql?
  2. data的列类型是什么?
  3. $id是否匹配表中的任何记录?
  4. 如何验证匹配的记录是否得到更新?
  5. 如果你的帐号连接到mysql允许写吗?
  6. PS:

    $data=strtotime(date('Y-m-d H:i:s'))+30; <-- wordless ...
    
    $data = time()+30;
    

    PPS:

    至少,你应该试试

    $sql = "UPDATE `chars` SET data='$data' WHERE id='$id'";
    mysql_query($sql) or trigger_error(mysql_error()." in ".$sql);
    

答案 1 :(得分:1)

没有理由在PHP中生成日期只是为了在MySQL中进行日期算术。你可以在mysql中更容易地做到这一点:

UPDATE chars
SET data=DATE_ADD(data, INVERVAL 30 SECOND)
WHERE id=$id

当然,这假设您已将data设为日期时间类型字段。如果它只是一个int,那么为什么还要考虑所有日期数学,只需data=data+30

同样,你以非常低效的方式产生你的时间价值。您将当前日期格式化为字符串,将该字符串转换为数字,并向其添加30。为什么不做呢

$data = time() + 30;

代替? time将当前日期/时间作为单个整数(unix时间戳)返回,从而节省了通过String Land的往返。