我有一個基于用戶角色的檔案分類表,例如:
| Workers_class_worker_doc_id | Workers_class_worker_doc_role_id | Workers_class_worker_doc_description |
|---|---|---|
| 1 | 1 | 駕照 |
| 2 | 1 | 合同 |
一張工人表
| 勞動力_工人_id | 勞動力_工人_姓名 | 勞動力_角色_id |
|---|---|---|
| 1 | 約翰·多伊 | 1 |
和一個勞動力_docs在哪里上傳 pdf
| 勞動力_doc_id | 勞動力_doc_worker_id | 勞動力_doc_class_id | 勞動力_doc_valid_from | 勞動力_doc_valid_to |
|---|---|---|---|---|
| 1 | 1 | 1 | 2022-01-01 | 2022-01-31 |
我正在嘗試使用 foreach 檔案分類和新的選擇獲取檔案檔案有效性
<table class="table table-sm my-2">
<tbody>
<?php
foreach ($data as $row) {
$workforce_class_worker_doc_id = $row['workforce_class_worker_doc_id'];
$workforce_class_worker_doc_description = $row['workforce_class_worker_doc_description'];
$stmt = $conn->prepare(' SELECT workforce_doc_class_id, workforce_doc_valid_from, workforce_doc_valid_to
FROM workforce_docs
WHERE workforce_doc_class_id = ?
AND workforce_doc_worker_id = ? ');
$stmt->bind_param('ii', $workforce_class_worker_doc_id, $workforce_worker_id);
$stmt->execute();
$stmt->bind_result( $workforce_doc_class_id, $workforce_doc_valid_from, $workforce_doc_valid_to );
$stmt->fetch();
$stmt->close();
?>
<tr>
<th><?php echo $workforce_class_worker_doc_description; ?></th>
<th><?php echo $workforce_doc_valid_from; ?></th>
<th><?php echo $workforce_doc_valid_to; ?></th>
<td><button class="btn btn-primary btn-sm"> Update Document</button></td>
</tr>
<?php
}
?>
</tbody>
</table>
我遇到了 foreach 的問題,我希望結果是這樣的:
| 駕駛執照 | 2022-01-01 | 2022-01-31 |
| 合同 |
但我的結果是
| 駕駛執照 | 2022-01-01 | 2022-01-31 |
| 合同 | 2022-01-01 | 2022-01-31 |
似乎獲取以前的變數,必須為空,因為我在 doc 表上沒有記錄
uj5u.com熱心網友回復:
我建議在此之前進行 LEFT JOIN,查詢更簡單更快
// in your foreach query your query add
LEFT JOIN workforce_docs ON workforce_doc_class_id = workforce_class_worker_doc_id
并將您的 foreach 更改為:
foreach ($data as $row) {
$workforce_class_worker_doc_id = $row['workforce_class_worker_doc_id'];
$workforce_class_worker_doc_description = $row['workforce_class_worker_doc_description'];
$workforce_doc_valid_from = $row['workforce_doc_valid_from'];
$workforce_doc_valid_to = $row['workforce_doc_valid_to'];
... rest of the code ...
uj5u.com熱心網友回復:
這是問題:
$stmt->fetch();
這在第二次運行時沒有結果,因此
$stmt->bind_result( $workforce_doc_class_id, $workforce_doc_valid_from, $workforce_doc_valid_to );
不被執行。這將使$workforce_doc_class_id, $workforce_doc_valid_from, $workforce_doc_valid_to以前的價值。
我建議在該行之前重置值:
foreach ($data as $row) {
$workforce_doc_class_id = '';
$workforce_doc_valid_from = '';
$workforce_doc_valid_to = '';
...
//rest of the code
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/403875.html
標籤:
上一篇:如何僅在codeigniter中顯示從今天的日期和月份到接下來的3個月的資料?
下一篇:隱藏表格直到發送回應
