我正在运行一个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
,其中包含用于返回输出中每一行的所有值。让我知道这是否适合您!