2016-04-03 15 views
0

Bir foreach deyiminde kullanıcı kimliğine göre bir ilk ad döndürmeyi denedim, ancak bunun yerine "dizi" sözcüğünü ilk ad olarak döndürür. Senaryodaki kelime dizisini neden döndürdüğünü bilmiyorum.PDO Fetch Assoc, "Array" sözcüğünü döndürür

<table style="margin-top:-16px;"> 
         <tbody style="overflow:hidden;"> 
         <tr> 
          <th>Title</th> 
          <th>Author</th> 
          <th>Date Submitted</th> 
          <th>File Location</th> 
          <th>Download Status</th> 
          <th>Approve Status</th> 
         </tr> 
        <?php 
         $dbConnect = 'mysql:dbname=test;host=localhost'; 
         $username = "test"; 
         $password = "test"; 

         try{ 
          $dbConnect = new PDO($dbConnect, $username, $password); 
         } catch (PDOException $error) { 
          echo 'Error Connecting: ' . $error->getMessage(); 
         } 

         $caseMgmtReturn = "SELECT * FROM `case`"; 

         $caseMgmt = $dbConnect->query($caseMgmtReturn); 

         foreach ($caseMgmt as $row) { 
          $user = $row["userID"]; 
          $firstPull = $dbConnect->prepare("SELECT `firstName` FROM `user` WHERE `userID`=:user"); 
          $firstPull->bindValue(":user", $user); 
          $firstPull->execute(); 
          $firstName = $firstPull->fetchAll(PDO::FETCH_ASSOC); 

          print "<tr> <td>" .$row["title"] . "</td> <td>" . $firstName . "</td> <td> " . $row["dateSubmitted"] . "</td> <td>" . $row["fileLocation"] . "</td> <td>" . $row["downloadStatus"] . "</td> <td>" . $row["approvedStatus"] ."</td></tr><br/>"; 
         } 
         ?> 
         </tbody> 
        </table> 
+0

Çünkü -> fetchAll' iç içe geçmiş bir dizi döndürür. – mario

+0

Daha önce de söylediğim gibi, fetchAll() bir anahtar => Değer ilişkili dizi olanı döndürür. Yazdırma işinizde $ firstName ['firstName'] kullanın veya bunun yerine -> fetch() kullanın. – Rottingham

+0

FetchAll'i getirme ile değiştirdim ancak aynı sonuçları aldım. – Tyharo

cevap

1

http://php.net/manual/en/pdostatement.fetchall.php

Kullanmak için gidiyoruz - Eğer gibi

$firstName['firstName'] 

, o zaman ilişkili Key => Değer çifti başvurmak gerekir> fetchAll (PDO :: FETCH_ASSOC) Kullandığınız -> fetch() indeks tabanlı bir dizi döndürür, böylece böyle bir değer elde edersiniz;

$firstName[0] 

Sen 'firstName' olarak masaya tek bir sütun başvurulan çünkü SQL dize içindeki dizin konumu 0 kullanın. > FetchAll (PDO :: FETCH_ASSSOC) öylesine kullanışlı - Eğer

SELECT * FROM 

kullandıysanız Sonra sütunlar kılan tabloda olduğu sırayı bilmek gerekir. Bir numaraya başvurmuyorsunuz, bir sütun adına başvuruyorsunuz.

Yani kod aşağıdaki gibi görünmelidir: `

$firstPull = $dbConnect->prepare("SELECT `firstName` FROM `user` WHERE `userID`=:user"); 
$firstPull->bindValue(":user", $user); 
$firstPull->execute(); 
$values = $firstPull->fetchAll(PDO::FETCH_ASSOC); 
print "<tr> <td>" .$row["title"] . "</td> <td>" . $values['firstName'] . "</td> <td> " . $row["dateSubmitted"] . "</td> <td>" . $row["fileLocation"] . "</td> <td>" . $row["downloadStatus"] . "</td> <td>" . $row["approvedStatus"] ."</td></tr><br/>"; 
+0

Almayı şu şekilde güncelleştirdim: $ firstName [0] = $ firstPull-> getir (PDO :: FETCH_ASSOC); ama hala şans yoktu – Tyharo

+0

Dinlemiyorsun. Benim revize edilmiş cevabımı görün – Rottingham

+0

Kod güncellemesi için teşekkürler. $ Değerleri ['firstname'] ile geri dönen bir şey ve $ değerlerini eklediğimde dizinin tekrar yazdırıldığını görüyorum. – Tyharo