无法将mysql数据检索到单个字符串中

时间:2016-01-30 19:19:54

标签: php mysql

我有这个查询应该从我的mysql数据库中检索数据并且打印是一个单独的字符串。要了解我要查找的内容,查询应该选择数据,然后将其打印为1/23/45/67/89/10/11

------------------------------------
id  ussd_string session_id
------------------------------------
1   1       123456  
2   /23     123456
3   /45     123456
4   /67     123456
5   /89     123456
6   /10     123456
7   /11     123456
------------------------------------

PHP:

$query="(SELECT * FROM userleveltracking WHERE session_id = '123456' ORDER BY id ASC LIMIT 7)";
$result=mysql_query($query);
while($rows=mysql_fetch_assoc($result))
{
$newussdString=$rows['ussd_string'];
}
$ussdString = $newussdString;
echo $ussdString;

当我执行代码时,它只返回第一个值1.我的代码出了什么问题。

5 个答案:

答案 0 :(得分:5)

试试这个

   $query="(SELECT * FROM userleveltracking WHERE session_id = '123456' ORDER BY id ASC LIMIT 7)";
$result=mysql_query($query);
$ussdString = "";
while($rows=mysql_fetch_assoc($result))
{
    $newussdString=$rows['ussd_string'];
    $ussdString .= $newussdString;
}
echo $ussdString;

您需要使用.=

连接字符串

修改 您还可以在数据库查询http://www.tutorialspoint.com/mysql/mysql-concat-function.htm

中连接字符串

答案 1 :(得分:4)

这只返回一个值,因为您没有在循环中打印结果。这将始终返回最后一条记录。

您可以这样使用:

$query="(SELECT * FROM userleveltracking WHERE session_id = '123456' ORDER BY id ASC LIMIT 7)"; 

$result=mysql_query($query);

while($rows=mysql_fetch_assoc($result)) 
{ 
   echo $rows['ussd_string']."<br>";
} 

其他解决方案是您可以将行数据存储到数组中,而不是在需要的地方使用。

旁注

请使用mysqli_*PDO因为mysql_*已被弃用且在PHP 7中不可用

答案 2 :(得分:3)

您需要在echo循环中while。因为你每次都会覆盖变量,所以你只能输出最后一行。

尝试:

$query="(SELECT * FROM userleveltracking WHERE session_id = '123456' ORDER BY id ASC LIMIT 7)";
$result=mysql_query($query);
while($rows=mysql_fetch_assoc($result))
{
echo $rows['ussd_string'];
}

或者如果以后需要每个值,请使用数组:

$query="(SELECT * FROM userleveltracking WHERE session_id = '123456' ORDER BY id ASC LIMIT 7)";
$result=mysql_query($query);
while($rows=mysql_fetch_assoc($result))
{
$values[] = $rows['ussd_string'];
}
foreach($values as $value){
    echo $value;
}

或连接:

$values = '';
$query="(SELECT * FROM userleveltracking WHERE session_id = '123456' ORDER BY id ASC LIMIT 7)";
$result=mysql_query($query);
while($rows=mysql_fetch_assoc($result))
{
$values .= $rows['ussd_string'];
}
echo $values;

答案 3 :(得分:3)

使用GROUP_CONCAT,而不是使用PHP循环:

SELECT GROUP_CONCAT(ussd_string ORDER BY id SEPARATOR '')
FROM userleveltracking 
WHERE session_id = '123456' 
GROUP BY 1

答案 4 :(得分:1)

当您显示上面的代码时,您不会相互追加字符串。在每次迭代中创建新对象并覆盖前一个。

$newussdString=$rows['ussd_string'];

在这一行。