首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查关联数组中的日期并使用与此日期关联的SQL查询(Mysql)值

如何检查关联数组中的日期并使用与此日期关联的SQL查询(Mysql)值
EN

Stack Overflow用户
提问于 2022-09-08 16:18:01
回答 2查看 42关注 0票数 0

我有一个关联数组如下:

代码语言:javascript
复制
$ a = 
[ 
  "2023-05-18" => 10.0
  "2023-07-14" => 2.0
  "2023-11-01" => 16.0
  "2023-11-11" => 2.0
  "2023-12-25" => 8.0
  "2024-01-01" => 2.0
  "2024-04-01" => 22.0
]

在SQL查询中,我想执行如下操作:

代码语言:javascript
复制
function ($a) {
     $sql = " ... some code before ...

              IF (table.date IN ($a), value of date (ex 10.0), 1)
            "
          ;
}

不只是如果用大小写,什么时候,或者任何想法是根据日期在关联数组中得到值(如果它存在于数组中);

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-09 10:03:07

我认为更好的方法是将逻辑与查询连接起来,并在处理时使用一个案例。就像这样

代码语言:javascript
复制
$s= "*\nCASE\n";

foreach ($yourArray as $dateKey => $dateValue) {
    $s .= "WHEN DATE_FORMAT(table.date, '%Y-%m-%d') = '" . $dateKey . "' THEN 
          " . $dateValue . " \n"
    ;
}

$s .= "END\n";

在查询中,您可以直接执行以下操作

代码语言:javascript
复制
    "query do something
         ". $s ."
      do something again "

我希望这能帮上忙

票数 1
EN

Stack Overflow用户

发布于 2022-09-09 12:05:42

你对你想要的东西的描述还不太清楚,但从谈话和一些假设来看,我认为这可能归结为:

“列出PHP数组中的所有值,其中日期键与SQL表中的至少一行匹配”

如果是这样的话,那么有一种方法可以做到:

  • 运行一个查询,该查询从与数组中的一个键匹配的表中返回一个不同的日期列表。这实际上为您提供了一个日期列表,这些日期同时出现在数组和数据库中。
  • 循环通过该列表显示与这些数组键匹配的值。

下面是一些示例代码。也许有一种更有效的方法,但这是我最初的想法:

代码语言:javascript
复制
$a = 
[ 
  "2023-05-18" => 10.0,
  "2023-07-14" => 2.0,
  "2023-11-01" => 16.0,
  "2023-11-11" => 2.0,
  "2023-12-25" => 8.0,
  "2024-01-01" => 2.0,
  "2024-04-01" => 22.0
];

$dates = array_keys($a);
$params = array_fill(0, count($dates), "?");

//sql to get all rows from database which match dates in the array
$sql = "SELECT `date` from `table` WHERE `date` IN (".implode(",", $params).")";
echo $sql; //just for debugging

//let's assume you're using PDO and have a connection object named $pdo, for the sake of argument
$stmt = $pdo->prepare($sql);
$result = $pdo->execute($dates);
$data = $result->fetchAll(PDO::FETCH_ASSOC);

//loop the returned set of matching dates
foreach ($data as $row)
{
    //output values from the original array which match the dates returned from the database
    echo $a[$row["date"]].PHP_EOL;
}

相关文件:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73652230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档