2014-01-13 2 views
0

메신저하지만 내가 루프 작업 올바르게 기능 :(의 PHP PDO는

SELECT 문이 올바른지, 나는 단지 캔트를 얻이 수없는 것 테이블에 MySQL의 데이터를 삽입하려고 데이터베이스에서 배열 표에 기입 이 밖에 데이터를 올바르게 에코 얻을.

어떤 생각을?

편집 코드는 내가 :)

오류가

Parse error: syntax error, unexpected '(', expecting T_STRING or T_VARIABLE or '{' or '$' in /home/4507408/public_html/review.php on line 67 
01가 고정되는 아래

.

<?php 

$sql = "SELECT u.userID, p.productID, p.name, c.categoryname, r.reviewID, r.reviewTime, r.reviewData, u.firstname FROM review r INNER JOIN product p on p.productID = r.productID INNER JOIN user u on u.userID = r.userID INNER JOIN category c on c.categoryID = p.categoryID ORDER BY $sortby ASC;"; 

$query = $DBH->prepare($sql); 
$query->execute(); 
$data = $query->fetchALL(); 
$originalDate = $row['reviewTime']; 
$newDate = date("d-m-Y", strtotime($originalDate)); 
while($row = $data->(PDO::FETCH_ASSOC))      
{ 

?> 

<table class="rev"> 

<tr> 
<th><a href="review.php?sort=name">Product Name:</a></th> 
<th><a href="review.php?sort=categoryname">Category</a></th> 
<th><a href="review.php?sort=reviewID">ID</a></th> 
<th><a href="review.php?sort=reviewTime">Date</a></th> 
<th><a href="review.php?sort=reviewData">Review</a></th> 
<th><a href="review.php?sort=firstname">Reviewer's Name</a></th> 
</tr> 


<td><a href="viewproduct.php?productID=<?=$row['productID']?>"><?=$name?></a></td> 
<td><?=$row['categoryname']?></td> 
<td><?=$row['reviewID']?></td> 
<td><?=$newDate?></td> 
<td><?=$row['reviewData']?></td> 
<td><?=$row['firstname']?></td> 
</tr> 

<?  } ?> 

올바른 코드 :이 줄은 어떤 의미가되지 않습니다

           <?php 

               $sql = "SELECT u.userID, p.productID, p.name, c.categoryname, r.reviewID, r.reviewTime, r.reviewData, u.firstname FROM review r INNER JOIN product p on p.productID = r.productID INNER JOIN user u on u.userID = r.userID INNER JOIN category c on c.categoryID = p.categoryID ORDER BY $sortby ASC;"; 

               $query = $DBH->prepare($sql); 
               $query->execute(); 
               $data = $query->fetchALL(); 

               ?> 

            <table class="rev"> 

               <tr> 
               <th><a href="review.php?sort=name">Product Name:</a></th> 
               <th><a href="review.php?sort=categoryname">Category</a></th> 
               <th><a href="review.php?sort=reviewID">ID</a></th> 
               <th><a href="review.php?sort=reviewTime">Date</a></th> 
               <th><a href="review.php?sort=reviewData">Review</a></th> 
               <th><a href="review.php?sort=firstname">Reviewer's Name</a></th> 
               </tr> 

               <? foreach ($data as $row): ?> 
               <? 
               $originalDate = $row['reviewTime']; 
               $newDate = date("d-m-Y", strtotime($originalDate)); 
               ?> 
               <tr> 
                <td><a href="viewproduct.php?productID=<?=$row['productID']?>"><?=$row['productID']?></a></td> 
                <td><?=$row['categoryname']?></a></td> 
                <td><?=$row['reviewID']?></a></td> 
                <td><?=$newDate?></a></td> 
                <td><?=$row['reviewData']?></a></td> 
                <td><?=$row['firstname']?></a></td> 
               </tr> 


               <? endforeach?> 


             </table> 

답변

1

:

while($row = $data->(PDO::FETCH_ASSOC)) 

난 당신이 필요로하는 무슨 생각이 (based on the docs)는

foreach ($data as $row) 

이후입니다 fetchAll은 다음을 반환합니다. 정렬. 당신이 shortag을 구성하지 않았을 때까지

0

이 있어야

$data = $query->fetchALL(); 
foreach($data as $row)  

대신 또한

while($row = $data->(PDO::FETCH_ASSOC)) 

,

<?php } ?> 

<? } ?> 
+0

감사합니다. 지금 문제를 해결하고 올바른 코드로 질문을 업데이트했습니다. – Adam91Holt

+0

PDO로 이전하는 과정에서 – Adam91Holt

0

@jon이 정확한지 foreach 루프가 필요하며 PDO :: FETCH_ASSOC을 $ query-> fetchAll (PDO :: FETCH_ASSOC)에 넣어야합니다.