是mysqli更新语句正确如下

时间:2012-10-21 23:36:59

标签: mysql mysqli

我在下面有一个mysql UPDATE查询:

$createDate = mktime(0,0,0,10,21,date("Y"));
$selectedDate =  date('d-m-Y', ($createDate));
    $sql = mysql_query("UPDATE Session SET Active = 0 WHERE DATE_FORMAT(SessionDate,'%Y-%m-%d' ) <= '".$selectedDate."'");

我想更改它以便我可以使用mysqli,我想知道下面的代码是否正确,我使用的是CRON,我无法确定它是否正常工作所以我想知道下面的代码是否正好正确的:

$createDate = mktime(0,0,0,10,21,date("Y"));
$selectedDate =  date('d-m-Y', ($createDate));
$sql = "UPDATE Session SET Active = ? WHERE DATE_FORMAT(SessionDate,'%Y-%m-%d' ) <= '".?."'";                                           
                    $update = $mysqli->prepare($sql);
                    $update->bind_param("is", 0, $selectedDate);
                    $update->execute();

上面的代码是否正确?我不确定是否第二个?是正确的

1 个答案:

答案 0 :(得分:0)

没有引用预编译语句中的占位符,您可以将该语句缩减为

"UPDATE Session SET Active = ? WHERE DATE_FORMAT(SessionDate,'%Y-%m-%d' ) <= ?"

但你提出的以下陈述让我担心:

  

我正在使用CRON,我无法确定它是否正常工作

您应该始终编写测试用例(小型独立程序)来测试程序的功能,并针对测试表或测试数据库运行它。投入测试的时间总会得到回报。关于测试和php有很多材料,例如here, about unit testing with php