PHP,MySQL - 返回输入是数组时使用的值


PHP, MySQL - Return which value was used when input is an array?

我正在运行一个PDO查询,如下所示:

$inputArr = array(val1, val2, val3, ...);
$qMarks = str_repeat('?,', count($inputArr) - 1) . '?';
$stmt = $db->prepare("SELECT id, name, type, level
                      FROM table 
                      WHERE name IN ($qMarks)");
$stmt->execute($inputArr);
... parse the rows that have been returned

这完全符合预期,没有挂断或任何东西。

我的问题是我需要知道$inputArr中的哪个值用于返回每一行。

我试过了

WHERE name IN ($qMarks) AS inputVal

WHERE name IN ($qMarks AS inputVal)

但这些会使查询崩溃。

如何确定使用哪个输入数组值返回输出中的每一行?

编辑 1

是的,我知道对于这种特殊情况,输入搜索值将是name,但上面的查询仅用于演示如何将搜索值放入查询中。

实际值要复杂得多,并且返回任何name值都很接近(但并不总是相同的)。

AS 关键字不会按预期工作。它主要用于别名子查询。您不能(据我所知)在WHERE条款中使用它。

您概述的方案应具有 $row['name'] 中的"名称"。如果它是您想要查看的不同变量,您只需将其添加到 SELECT 子句中即可。

很好的问题,简单的答案:

代码WHERE name IN $qMarks)");部分仅获取数据库中与数组匹配的值,因此您可以做的是查看获取的行中存在哪些name值。例如:

$rows_fetched = $stmt->fetchAll(PDO::FETCHASSOC);
$inputArray = array();
foreach($rows_fetched as $value)
{
  $inputArray[] = $value['name'];
}
print_r($inputArray);//printing the results

现在,您已经有了数组$inputArray,其中包含用于返回输出中每一行的所有值。让我知道这是否适合您!