大家好我有这个问题表是:
images:
id || path_id || name
1 1 example1.jpg
2 1 example2.jpg
3 1 example3.jpg
4 2 example4.jpg
path:
id || folder_path
1 "./...."
2 "./...."
查询是这样的:
$query="SELECT images.name,path.folder_path FROM images
LEFT JOIN
path ON path.id=images.path_id
WHERE path.id=?";
让我们说?
是1
。这将返回除匹配example1.jpg
的第一张照片之外的所有照片。如果我将example2.jpg
作为第一行,那么它将跳过example2.jpg
,它会给我example1.jpg
。为什么??我想要的是具有特定path_id +此特定id的folder_path的所有图片。
整个查询。
$query="SELECT images.name,path.folder_path FROM images
LEFT JOIN
path ON path.id=images.path_id
WHERE path.id=?";
if($stmt= $mysqli->prepare($query))
{
for($i=0;$i<count($result);$i++)
{
$bind_param= $result[$i];
/*bind parameters*/
$stmt->bind_param("s",$bind_param);
/* execute query */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($images,$path);
$stmt->fetch();
}
$i=0;
while($stmt->fetch()){
printf("%d) %s PATH:%s \n",$i,$images,$path);
$i++;
}
$stmt->close();.
$ result是id = 1。当我尝试printf数据时,它只打印我期望的3个图像中的2个和正确的folder_path。
答案 0 :(得分:0)
问题是循环中的这一行,我昨天试过,我今天没有看到它在那里。
for($i=0;$i<count($result);$i++){
....
....
$stmt->fetch(); /* <--- Problem */
}
正如纪录片所说&#34;请注意,在调用mysqli_stmt_fetch()&#34;之前,所有列必须由应用程序绑定。 这意味着我将在循环完成后获取数据而不是同时获取数据。