2013-02-12 33 views
-2

我正在制作一个私人消息系统,并且我在while语句中使用mysqli_fetch()函数返回与查询关联的所有行。但是,PHP只返回MYSQL中的最后一行。mysqli_fetch:返回一行

这里是我的代码:

<?php 
$Connect = new mysqli("localhost", "root", "", "Data"); 
error_reporting(E_ALL^E_NOTICE); 
session_start(); 
$Val = $_POST['ID']; 
$Get = 'SELECT * FROM CMessages WHERE PID="'.$Val.'"'; 
$Username = $_SESSION['Username']; 
$Admin = $_SESSION['Admin']; 

    if($Result = $Connect->query($Get)) 
    { 
    while($Row = $Result->fetch_assoc()) 
    { 
     $User = $Row['Username']; 
     $Msg = $Row['Msg']; 
     $Date = $Row['Date']; 
     $ID = $Row['ID']; 

     if($User == $Username) 
     { 
      $MText['T'] = '<div id="Msg">' . $User . ' : ' . $Msg . ' - ' . $Date .' - <a class="TLink" href="MDelete.php?ID='.$ID.'">Delete</a></div>'; 
     } 
     elseif(isset($Admin)) 
     { 
      $MText['T'] = '<div id="Msg">' . $User . ' : ' . $Msg . ' - ' . $Date .' - <a class="TLink" href="MDelete.php?ID='.$ID.'">Delete</a></div>'; 
     } 
     else 
     { 
      $MText['T'] = '<div id="Msg">' . $User . ' : ' . $Msg . ' - ' . $Date .'</div>'; 
     } 
    } 
    } 

    echo json_encode($MText); 
    ?> 
+0

phpmyadmin中有3行与我的查询在$ Get变量中查找的值相同 – 2013-02-12 02:10:17

+0

如果您使用的是'mysqli',这是一件好事,请务必使用[SQL占位符]( http://bobby-tables.com/php)正确地转义您的数据。 – tadman 2013-02-12 02:12:51

+1

什么是“PID”?给你的表结构,以及你应该返回的例子数据集。还要考虑['准备statements'(http://www.google.com/search?q=prepared%20statements)当你使用的mysqli了。 – mario 2013-02-12 02:13:15

回答

3

它返回的所有行,但在while循环,你总是覆盖$MText变量。因此,只有最后一个将与json_encode显示。

也许你的意思是写$MText['T'][],而不是$MText['T']

+0

嘿!有效! – 2013-02-12 02:21:18

+1

谢谢你,我真的很感激! – 2013-02-12 02:21:37