2016-01-30 69 views
4

我有這個查詢應該從我的mysql數據庫中檢索數據並且打印爲單個字符串。要明白我的尋找,查詢應該選擇的數據,然後打印出來作爲1/23/45/67/89/10/11無法將mysql數據檢索到單個字符串

------------------------------------ 
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

有人會說that..I不想成爲one..But HTTP: //php.net/manual/function.mysql-query.php ..這是關於mysql_query的事實..他走了:(我們沒有他了.. – ern

回答

3

您需要echowhile環路Concat的字符串。正如你每次覆蓋變量,所以你只能得到最後一行輸出。

嘗試:

$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; 
+0

謝謝..這工作完美。 – nick

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; 

您需要.=

編輯 您還可以在數據庫中查詢CONCAT字符串http://www.tutorialspoint.com/mysql/mysql-concat-function.htm

3

使用GROUP_CONCAT,比你可能無法使用PHP循環:

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

正如您在上面顯示的代碼,您不會將字符串添加到彼此。在每次創建新對象並覆蓋前一個的迭代中。

$newussdString=$rows['ussd_string']; 

在這一行。

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

相關問題