2013-08-05 77 views
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 ; 
+2

中的任何一个请显示生成的查询字符串和您的表结构。 –

+2

您应该使用预处理语句查看PDO或MySQLi,因为mysql_函数已被弃用。 – Fredd

+0

请勿使用mysql_ *使用mysqli_ *或PDO。 –

回答

0

$booker_id的值是什么,因为我怀疑它是更新成功,但实际上没有匹配记录。打印出$query并准确查看要发送给db的内容

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; 
    } 

希望这将有助于

+0

没有..它没有工作 –

+0

请回显上面的查询,并检查值是否越来越 –

0

而且`直到对列名的,你有列名日期date是mysql中的一列数据类型和保留keywork使用:

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

它返回true,因为没有错误。
但Mysql没有找到任何条目来更新,因为没有任何条件对应您的条件。
您应该返回整个查询来检查它,并尝试用phpMyAdmin手动执行它。
对于日期栏中的+1。

0

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