【问题标题】:How to combine SQL query with a PHP script如何将 SQL 查询与 PHP 脚本结合使用
【发布时间】:2017-07-26 04:08:46
【问题描述】:

我有这个查询来计算某个用户提交的表单数量

$sql="SELECT `ID` FROM `kform` WHERE `ID`='$ID'";                               
$result = $conn->query($sql);
$k=0;
if ($result->num_rows > 0) {
   while($row = $result->fetch_assoc()) {                                                                                                 
      $k++;
   }
}

另外我有这个 php 脚本,它基本上是检查某个日期(包含在每个表格中)并打印 valid 如果它在本财政年度内

$endYear = 2017;
while($endYear <= 2025) {
    $end = $endYear.'/06/30';
    $endDate = DateTime::createFromFormat('Y/m/d', $end);
    $initDate = DateTime::createFromFormat('Y/m/d', $end);
    $initDate = $initDate->sub(new DateInterval('P1Y')) -> add(new DateInterval('P1D'));
    $ddb =  $row2['Date'];
    $dateFromDB = DateTime::createFromFormat('Y-m-d', $ddb);
    if ($dateFromDB >= $initDate && $dateFromDB <= $endDate) { 
        echo "valid\n";
        echo "\tStartDate->\"".$initDate->format("Y-m-d")."\"\n";
        echo "\tEndDate->\"".$endDate->format("Y-m-d")."\"\n";
        echo "\tDateFromDatabase->\"".$dateFromDB->format("Y-m-d")."\"\n";
    }

    $endYear++;
}

现在我想做的是将这两个功能结合在一起,其背后的想法是仅统计本财政年度的表格,任何旧表格都不应该被计算。我尝试了不同的方法来组合它们,但每次都会给我不同的错误,那么有可能这样做吗?

【问题讨论】:

  • 尽我所能使示例代码具有可读性,块结构可见,并且在 >= 等内容周围有一些空格,以便您可以更清楚地看到意图。还使用一致的 {},从同一行开始,如 if/while 等。有时不是一个地方,有时是另一个地方。
  • 何时... 人们何时知道他们应该使用准备好的语句。所有这些过时且极其安全的代码示例从何而来?请阅读stackoverflow.com/questions/24988867/…

标签: php mysql sql merge


【解决方案1】:

从那开始:

 function isValidYear($dategiven){
   $endYear=2017;
   while($endYear<=2025) {
     $end = $endYear.'/06/30';
     $endDate = DateTime::createFromFormat('Y/m/d', $end);
     $initDate = DateTime::createFromFormat('Y/m/d', $end);
     $initDate = $initDate->sub(new DateInterval('P1Y'))->add(new DateInterval('P1D'));
     $ddb =  $dategiven;
     $dateFromDB = DateTime::createFromFormat('Y-m-d', $ddb);
     if ($dateFromDB>=$initDate && $dateFromDB<=$endDate) { 
       return true;
     }
     $endYear++;
    }
    return false;
 }

还有

$sql="SELECT `ID` FROM `kform` WHERE `ID`='$ID'";                               
$result = $conn->query($sql);
$k=0;
if ($result->num_rows > 0) {
 while($row = $result->fetch_assoc()) {
   if(isValidYear($row['datefield'])){
      $k++;
   }
}

注意:您的 $sql 仅选择 ID 字段。你必须在Date

$sql="SELECT * FROM `kform` WHERE `ID`='$ID'"; 

【讨论】:

  • 它有效!非常感谢,我可以在'datefield' 中使用$dategiven,对吧?
  • isValidDate 不应该是isValidYear
  • 您必须将'datefield' 设置到数据库中的正确字段(您已使用$row2['Date'])。是的isValidYear 更好我现在改变它。但你可以随心所欲地调用它。
猜你喜欢
  • 1970-01-01
  • 2012-07-31
  • 2023-02-10
  • 2018-02-22
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多