PHP: फोरच () लूप - php, arrays, loops, foreach के बाद सरणी खाली हो जाती है

मेरे पास यह सवाल है

$categories = $dbh->query(" SELECT * FROM categories ORDER BY name ASC ");

और मुझे इस सरणी पर दो बार लूप की जरूरत है।

foreach($categories as $category) {
dd($category);
}
echo "---------------";
foreach($categories as $category) {
dd($category);
}

यह कोड लौटाता है

stdClass Object
(
[id] => 24
[name] => granchi
[slug] => granchi
)
stdClass Object
(
[id] => 26
[name] => molluschi
[slug] => molluschi
)
stdClass Object
(
[id] => 25
[name] => pesci
[slug] => pesci
)
---------------

दूसरे पाश में सरणी खाली हो जाती है। मुझे एक समान सवाल मिला है, दो जबकि लूप्स, दूसरी वापसी खाली ऐरे? , लेकिन मुझे पीडीओ के लिए एक समान समाधान नहीं मिला।

दो समान arrays बनाने के दो बार पूछताछ के बिना, मैं उनके माध्यम से दो बार कैसे लूप?

और मुझे समझ में नहीं आता कि यह पहली लूप के बाद क्यों खाली हो जाता है।

उत्तर:

उत्तर № 1 के लिए 4

आपको पहले एक क्वेरी के परिणाम को सरणी में ले जाना होगा।

mysqli:

<?php

$db = new mysqli("localhost", "root", "", "test");

if($db->connect_errno > 0){
die("Unable to connect to database [" . $db->connect_error . "]");
}

$sql = " SELECT * FROM categories ORDER BY name ASC ";

if(!$result = $db->query($sql)){
die("There was an error running the query [" . $db->error . "]");
}

while($row = $result->fetch_assoc()){
echo $row["**column name**"] . "<br />";
}

?>

पीडीओ:

<?php

$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "");

$sql = "SELECT * FROM categories ORDER BY name ASC ";

try {
$stmt = $db->query($sql);
} catch(PDOException $ex) {
echo "An Error occured!";
}

$result = $stmt->fetch(PDO::FETCH_ASSOC);

foreach($result as $key => $val)
{
echo $key." - ".$val."<br />";
}

?>

संबंधित सवाल
सबसे लोकप्रिय