0

我正在我的脚本中执行更新查询。它返回 true 但更新查询不更新表。这是查询。我在这里缺少什么?

$connection = db::factory('mysql');
$query='update bookings SET date="'.$date.'",time_from="'.$time_from.'",time_to="'.$time_to.'",status="'.$status.'" where booker_id="'.$booker_id.'"';
if(mysql_query($query)) {
   echo "success"; exit;
   return true;
} else {
   echo "fail"; exit;
   return false;
}

这是表结构

CREATE TABLE IF NOT EXISTS `bookings` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date` date NOT NULL,
  `time_from` time NOT NULL,
  `time_to` time NOT NULL,
  `status` varchar(250) NOT NULL,
  `booker_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;
4

5 回答 5

0

试试这个 :

 $query='update `bookings` SET `date`="'.$date.'",`time_from`="'.$time_from.'",`time_to`="'.$time_to.'",`status`="'.$status.'" where `booker_id`="'.$booker_id.'"';


    $rs = mysql_query($query) or die(mysql_error());

    if($rs) {
       echo "success"; exit;
       return true;
    } else {
       echo "fail"; exit;
       return false;
    }

希望它会有所帮助

于 2013-08-05T09:03:17.647 回答
0

列名上的`直到列名日期和日期是列的数据类型,mysql中的保留键使用这个:

$query='update `bookings` SET `date`="'.$date.'",`time_from`="'.$time_from.'",`time_to`="'.$time_to.'",`status`="'.$status.'" where `booker_id`="'.$booker_id.'"';
于 2013-08-05T09:06:29.823 回答
0

它返回 true,因为没有错误。
但是Mysql没有找到任何要更新的条目,因为没有一个符合你的条件。
您应该返回整个查询以检查它,并尝试使用 phpMyAdmin 手动执行它。
+1 为日期列周围的`。

于 2013-08-05T09:09:09.913 回答
0

的值是多少$booker_id,因为我怀疑它正在成功更新但实际上与记录不匹配。打印出来$query看看到底是什么发送到数据库

于 2013-08-05T09:13:05.380 回答
0

mysql_query()只返回 true,因为查询成功运行。我建议获取更新/修改的行数,以检查此查询是否更新了任何行。所以在执行更新查询后立即使用mysql_affected_rows() 。注意: mysql_* 查询已被弃用,因此请尝试使用任何PDOmysqli

于 2013-08-05T09:27:39.170 回答