[英]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].' '.$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.