簡體   English   中英

重用php prepare語句將僅返回mysql表的最后一個條目

[英]Reusing php prepared statement will only return last entry of mysql table

我遇到一個奇怪的問題。 老實說,這是我第一次嘗試在同一php頁面上重新使用准備好的語句。 在這種情況下,我真的需要它工作,因為用不同的變量名執行2個相同的語句的解決方案似乎是多余的。 無論如何,這就是我所做的。

    $mysqli = new MySQLi(HOST,USER,PASSWORD,DATABASE);
    $image_from_database = $mysqli->prepare("SELECT slider_id, slider.images_id, images.images_id, images.image_name,
                                                    images.image_path, images.image_type, images.image_size,
                                                    image_tag_name, image_tags.date FROM slider
                                             LEFT JOIN images ON slider.images_id = images.images_id
                                             LEFT JOIN image_tags ON image_tags.images_id = images.images_id");
    $image_from_database->bind_result($sliderID,$sliderImageID,$imageID,$imageName,$imagePath,$imageType,$imageSize,$tagName,$tagDate);
    $image_from_database->execute();
$image-from_database->store_result();

然后撥打電話:

<div class="large-6 columns">
<fieldset class="slider_control">
<legend>Images From Database</legend>
<div class="slider_image_edit">
<div class="slider">
<?php 
while($image_from_database->fetch()){ 
if(!empty($sliderID)){ 
echo'
<div><img src="../'.$imagePath.'"></div>';
    }
}
$image_from_database->free_result();
?>
    </div>

然后在頁面的后面,我想在表格而不是圖像滑塊中顯示結果...

<fieldset>
<legend>Choose the different Images to edit, you can view the slider to see the order they are in</legend>
<form action="" method="post" enctype="multipart/form-data">
<table>
<thead>
<th>ID</th>
<th>Name</th>
<th>Tag</th>
<th>Type</th>
<th>Size</th>
<th>Edit</th>
<th>Delete</th>
</thead>
<tbody>
<?php
$image_from_database->execute();
while($image_from_database->fetch()){ 
echo '
<tr>
<td>"'.$sliderID.'"</td>
<td>"'.$imageName.'" </td>
<td>"'.$tagName.'" </td>
<td>"'.$imageType.'" </td>
<td>"'.$imageSize.'" </td>
<td>Edit</td>
<td>Delete</td></tr>';
}
?>
</tbody>
</table>
</form>
</fieldset>

當我加載頁面時,滑塊將完美顯示所有相應的圖像,但是在列表中,它將僅顯示表格的最后一行,在此特定示例中,它將顯示類似以下內容:

ID  Name    Tag Type    Size    Edit    Delete
"2" "bf535be38b469cfbcf6db6d02ba3a9d0.jpg"  "Colleges & Programs"   "image/jpeg"    "82993" Edit    Delete
"2" "bf535be38b469cfbcf6db6d02ba3a9d0.jpg"  "Colleges & Programs"   "image/jpeg"    "82993" Edit    Delete

編輯和刪除目前不執行任何操作,它們只是作為以后我想要的占位符而存在。

無論如何,有人可以告訴我為什么查詢將在頁面的第一部分而不是第二部分起作用嗎?

這是因為您已經顯示了所有記錄,並且從數據庫獲得的數組已經結束了。 因此,當您再次調用它時,它將從最后一個開始。

執行Jeroen告訴您的操作,將結果存儲在變量或其他內容中,然后將其重置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM