【发布时间】:2015-08-26 11:49:32
【问题描述】:
每次用户查看图像时,我都会设置一个 cookie,然后当他们查看另一个图像时,我会修改该 cookie,使其也具有一个值,包括最后查看的图像 id。
例如
第一张图片:Cookie = 0;
对于每个之后:Cookie = 0,3,4,6,1,44,2
等等
然后我正在检查该 cookie,获取值并尝试输入查询:
$value = 0;
// check for cookie
if ( isset($_COOKIE['viewed']) ) {
$value = $_COOKIE['viewed'];
}
$stmt = $conn->prepare("SELECT * FROM images where id NOT IN (:viewed) ORDER BY rand() LIMIT 1");
$stmt->execute([':viewed' => $value]);
但这对返回的结果没有任何影响。
如果我将 NOT IN 硬编码为 (1,2,4),那么它将消除这些结果。
在我的 JSON 返回中,我检查了字符串是什么:
$return['cookie'] = $value;
并且数值显示:
"cookie":"0,3,3,2,2,2,2,3,2,2,1,1,1,1,2,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,1,3,2,2,3,3,2,2,3,2,2,2,1"
我怎样才能让它工作?
【问题讨论】:
-
:viewedin 等于查看的id对吗? -
您是否在运行查询之前检查了 $value 的值以确保其中包含正确的数据?
-
@versalle88 是的,死()'ing $value 返回例如0,1,3,5,2,44,55
-
而不是 $stmt->execute([':viewed' => $value]);试试 $stmt->execute(array(':viewed' => $value));
-
PDO 参数不能是这样的数组。在这里查看一些答案:stackoverflow.com/questions/920353/…