[英]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有一些非常方便的方法以不同的格式返回查詢結果:
fetch()
-類似於mysql_fetch_array()的通用讀取方法。 fetchAll()
-獲得所有行而沒有while循環。 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.