我有这个查询应该从我的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.我的代码出了什么问题。
答案 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'];
在这一行。