簡體   English   中英

如何計算while循環輸出PHP SQL

[英]How to count while loop output PHP SQL

樂解

我是在Brian和W3Schools的幫助下到達這里的

這是垃圾,無法正常工作...我無法將循環輸出到特定位置

$rows2 = array();
while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
$rows2[] = $stratoparse;
$rows3[] = $date;
}

for($i=0;$i<=$num_rows;$i++){
echo $rows3[$i].'&nbsp;'.$rows2[$i].'<br>'.'<br>';
}

輸出

2015年1月5日樣本3

2015年1月5日樣本2

2015年1月5日樣本

2015年1月5日樣本3

2015年1月5日樣本2

2015年1月5日樣本

最初的職位

所以我試圖存儲while循環查詢的輸出。 在一個獨立的.php文件中,while循環可以很好地輸出數據。 但是,當我嘗試存儲它時,例如。 通過POST啟動循環,例如。 搜索提交時,while循環不會像獨立腳本中那樣“正確執行”。 我將提供代碼的兩部分。

我想做的是計算滿足SELECT語句的列數,因為我知道我將使用range(1,this number)來存儲while輸出...如果有更簡單,更直接的方法,那也很棒。

這是獨立代碼,不僅完成選擇。 它確實起作用,行以降序回顯。

看似拼寫錯誤不是拼寫錯誤,服務器訪問信息的用戶名只有一個臂,因此我用兩個r來區分。

<?php
$stmt=$link->prepare('SELECT stratoparse,date FROM stock WHERE user=? AND keyphrase=? ORDER BY ID DESC');
$stmt->bind_param('ss',$userrname,$keyphrase);
$stmt->execute();

$stratoparse=null;
$date=null;
$stmt->bind_result($stratoparse,$date);

while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
}
?>

這是我要使用的代碼,我實際上不需要發布第二部分。 上面的代碼將由POST事件觸發,然后將輸出存儲並在HTML中回顯

我也試圖將這個解決方案應用在stackoverflow上

$store_array = range( 1, 5);

$i = 1; 
$store_array = array();
while( $i <= 5)
{
     $store_array[] = $i;
     $i++;
}

更新

這是我運行測試.php文件時的輸出

2015年1月5日樣本3

2015年1月5日樣本2

2015年1月5日樣本

010

您可以看到回顯的兩個num_rows為0,中間的1是bool(true),我認為當我回顯$ stmt-> execute();時,

這是代碼減去登錄信息

$link = new mysqli("$servername", "$username", "$password", "$dbname");
$link2 = new mysqli("$servername", "$username", "$password", "$dbname");

$stmt=$link->prepare('SELECT stratoparse,date FROM stock WHERE user=? AND keyphrase=? ORDER BY ID DESC');
$stmt->bind_param('ss',$userrname,$keyphrase);
$stmt->execute();
$num_rows = $stmt->num_rows;
$stratoparse=null;
$date=null;
$stmt->bind_result($stratoparse,$date);
while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
}


echo $num_rows;

$stmt2=$link2->prepare('SELECT COUNT(keyphrase) FROM stock WHERE user=? AND keyphrase=?');
$stmt2->bind_param('ss',$userrname,$keyphrase);
echo $stmt->execute();
$stmt2->bind_result($keyphrase);
$num_rows2 = $stmt2->num_rows;

echo $num_rows2;

假設您的意思是行數而不是列數,則不需要while循環-您可以直接從SQL語句獲取返回的行數

$stmt->store_result();
$num_rows = $stmt->num_rows;
$stmt->close();

您已經從SELECT查詢中知道的列數。

編輯:根據下面的注釋,您想存儲查詢的結果以備后用。 不幸的是,使用准備好的語句比標准msyql結果有些混亂。 您可以在文檔中找到bind_result的一些示例,但是基本思路是這樣的:

$rows = array();
while ($stmt->fetch()) {
    $rows[] = array('key1'=>$field1, 'key2'=>$field2, ...);
}

當然,它不是完整的代碼,但是一旦充實它,您將得到一個行數組,其中每個元素都是作為關聯數組的行,就像使用mysql結果的fetch_assoc()函數所得到的那樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM