-1

我在下面有一个 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();

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

4

1 回答 1

0

准备好的语句中的占位符不被引用,您可以将该语句简化为

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

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

我正在使用 CRON,但我无法确定它是否有效

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

于 2012-10-21T23:49:44.470 回答