[英]PHP MySQL PDO selecting rows on array with id's
我在会话中存储了来自form []的多个id值。
我试图在mysql pdo数据库查询中使用这些ID,如下所示:
$noot = str_repeat("?,", count($_SESSION['uniqueID'])-1) . "?";
$printen = 1;
$query = $db->prepare("SELECT DISTINCT ru.GB,g.Name,g.Address,g.Place,ri.Ricode,lo.nr,lo.uniqueID,GROUP_CONCAT(ru.control SEPARATOR '<BR>') AS control,GROUP_CONCAT(ru.BestEmail SEPARATOR '<BR>') AS email,GROUP_CONCAT(ru.ont_info SEPARATOR '<BR>') AS ont,GROUP_CONCAT(ru.sup SEPARATOR '<BR>') AS Lev,GROUP_CONCAT(ru.OrderID SEPARATOR '<BR>') AS orderID,GROUP_CONCAT(DISTINCT ru.rID SEPARATOR '<BR>') AS RID,GROUP_CONCAT(ru.Pack SEPARATOR '<BR>') AS packet FROM rutrans AS ru JOIN routes AS ri ON ru.rID = ri.rID
LEFT OUTER JOIN lock AS lo
ON ri.Ricode = lo.ricode AND ru.GB = lo.location
LEFT OUTER JOIN gbc AS g
ON ru.GB = g.CodeB
WHERE lo.uniqueID IN ($noot)");
$query->execute($_SESSION['uniqueID']);
//$data = $query->fetchAll();
并尝试获得如下结果:
foreach($queryRT as $rowRT) {
(I echo database results within a table for each row here,... or try to do this)
}
发生以下错误:
致命错误:在消息中出现未捕获的异常“ PDOException”,消息为“ SQLSTATE [HY093]:无效的参数号”
当我添加
$data = $query->fetchAll();
查询页面完全空白。
当我尝试显示以下内容时:
print_r($data);
页面上仅显示以下内容:
数组()
当我尝试这样的事情:
print_r($_SESSION['uniqueID']);
它显示数组如下:
Array ( [B1601222016164345] => B1601222016164345
[B1601222016161121] => B1601222016161121
[B1601262126474345] => B1601262126474345
[B1602011856554345] => B1602011856554345
[B1602101921434345] => B1602101921434345
[Z1602102002034345] => Z1602102002034345
[Z1602102026544345] => Z1602102026544345
)
显然我做错了什么。 有谁愿意解决这个问题吗?
$_SESSION['uniqueID']
,它的索引必须有数字?
作为占位符。
input_parameters中的键必须与SQL中声明的键匹配。 在PHP 5.2.0之前,这被默默地忽略了。
尝试这个:
$query->execute(array_values($_SESSION['uniqueID']));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.