所以我得到了我认为非常简单的 SELECT 查询。查询本身如下所示:
"SELECT id FROM files WHERE name IN ("me_me-about.jpg", "me_me-blog.jpg", "me_me-.jpg")
我想要数据库中这三个文件的ID。他们在他们的桌子上。它们具有唯一的 ID。(我这样做是为了让 id 插入到联结表中以将它们与用户配置文件相关联,以防您想知道。)我从 $filenames 数组中创建了语句,这只是一个简单的,一个文件名的维数组:
$stmt = '(';
for ($i = 0; $i < sizeof($filenames); $i++) {
$stmt .= '"' . $filenames[$i] . '", ';
}
$stmt = substr($stmt, 0, -2);
$stmt .= ')';
$query2 = $this->db->prepare("SELECT id FROM files WHERE name IN " . $stmt);
查询返回一行,最后一行。从我所看到的 WHERE...IN 语法的所有内容来看,这不应该是什么?有什么我看不见的乱七八糟的东西吗?
来自 PMA 的“文件”的 CSV 表转储(id、名称、年份 [一旦工作正常,我会回到那个位置]):
"20";"me_me-about.jpg";;"0"
"21";"me_me-blog.jpg";;"0"
"22";"me_me-.jpg";;"0"
$filenames 的 print_r:
Array ( [0] => me_me-about.jpg [1] => me_me-blog.jpg [2] => me_me-.jpg )
原始形式的 $stmt 的 print_r(上面有我的代码):
("me_me-about.jpg", "me_me-blog.jpg", "me_me-.jpg")
Try-catch 执行。将 $rows 输出到 $_SESSION 以便我可以在相关页面上打印它:
try {
$query2->execute();
$rows = $query2->fetch();
$_SESSION['stmt'] = $rows;
} catch (PDOException $e) {
die($e->getMessage());
}
$_SESSION['stmt'] 的 print_r:
Array ( [id] => 22 [0] => 22 )