簡體   English   中英

將數據庫中的日期存儲在數組中

[英]Store dates from database in an array

我試圖將存儲在數據庫中的日期列表放入數組中。 我嘗試了以下功能,但只得到了“數組”。 我不確定自己在做什么錯或是否有另一種檢索日期的方法。

function getdate($id) {

   $select = $this->db->query("select * from dates where user_id= '$id' ");
   $result_array = array();

   while($row = $select->fetch( PDO::FETCH_ASSOC )){
        $result_array[] = $row['date'];
   }

   return $result_array;

}

如果您期望多於一行,則應為“ fetchAll”。 另外,如果您不需要所有內容,只需獲取所需的列即可。

這是從PHP PDO文檔中為fetchAll修改的,我假設您的用戶ID是整數...

$sth = $dbh->prepare("SELECT date FROM dates WHERE user_id= :userid ");
$sth->bindValue(':userid', $id, PDO::PARAM_INT);
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
print_r($result);

如nogad所說,print_r將顯示數組的外觀,以便您可以訪問它。

在使用PDO statements您可以遵循PDO足夠強大以避免SQL注入的過程。 但是您尚未在代碼中跟進該過程。 建議使用綁定參數。

注意:除fetch語句外,您的代碼將運行良好。 您必須fetchAll(); 這樣它就可以捕獲結果查詢中的所有數據,並可以打印出來。

如果是這種情況,則必須使用fetchAll(); 用於從數據庫檢索多行輸出,或者用於檢索輸出的單一行,您的代碼將看起來不錯。

解決方案一:

您可以在函數中使用綁定參數,以便避免SQL注入。

functions.php

function getdate($id)
{
$select = $conn->prepare("SELECT `date` FROM `dates` WHERE user_id= :id ");
$select->bindValue(':id', $id, PDO::PARAM_INT);
$select->execute();
$result = $select->fetchAll(PDO::FETCH_ASSOC);
return $result;
}

其他文件,您可以像這樣獲得函數調用。

$result = getdate(3);

並且您必須print_r() $result 這樣就可以得到array()結構。

關於PDO中的fetch語句的一些更清晰的解釋。

PDO有一些非常方便的方法以不同的格式返回查詢結果:

  1. fetch() -類似於mysql_fetch_array()的通用讀取方法。
  2. fetchAll() -獲得所有行而沒有while循環。
  3. fetchColumn() -在不首先獲取數組的情況下獲取單個標量值。

例:

$stmt = $pdo->prepare("SELECT id,name FROM songs WHERE dt=curdate()");
$stmt->execute();
$data = $stmt->fetchAll();

現在,所有的歌曲都放在$ data數組中,我們可以根據需要設計頁面。

<table>
<?php foreach ($data as $row): ?>
  <tr>
    <td>
      <a href="songs.php?<?=$row['id']?>">
        <?=htmlspecialchars($row['name'])?>
      </a>
    </td>
  </tr>
<?php endforeach ?>
</table>

暫無
暫無

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

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