2016-12-28 17 views
2

我有一個mysql表需要在前端應用程序中顯示數據以及行號。下面的查詢工作完全在phpMyAdmin如何在PHP應用程序中的mysql中打印行號

SET @row_num=0; SELECT (@row_num:[email protected]_num+1) AS num,INV,DOS,PTNAME,BAL,PROV  from sheet; 

但是,當我在使用PHP項目相同的代碼它返回以下錯誤 警告:mysql_fetch_array():提供的參數不是一個有效的MySQL

下面是我的代碼:

<?php 
$conn = mysql_connect("localhost","root",""); 
mysql_select_db("omega",$conn); 
$sel="SET @row_num=0; SELECT (@row_num:[email protected]_num+1) AS    num,INV,DOS,PTNAME,BAL,PROV from sheet"; 
$sqlquery=mysql_query($sel); 

while($dis=mysql_fetch_array($sqlquery)) 
{ 
echo"<tr>"; 
echo "<td>".$dis['num']."</td>"; 
echo "<td>".$dis['INV']."</td>"; 
echo "<td>".$dis['DOS']."</td>"; 
echo "<td>".$dis['PTNAME']."</td>"; 
echo "<td>".$dis['BAL']."</td>";  
echo "<td>".$dis['PROV']."</td>";  
echo"</tr>"; 
} 
+0

您的錯誤信息是由於['mysql_query()'](ht tp://php.net/manual/en/function.mysql-query.php)*發送一個唯一的查詢(**不支持多個查詢**)*。 ** 1 ** SET @ row_num = 0; ** 2 ** SELECT(...'。你需要更新到'mysqli'並使用['mysqli_multi_query()'](http://php.net/manual/en/mysqli.multi-query.php) – Sean

+0

您可能會收到錯誤的數據,因爲您的查詢中有2個命令(Set和select),請嘗試查詢Set,然後選擇。在上下文中,可以使用$ row = 1解決該問題;循環和內部循環:$ row ++; –

+0

爲了您自己的利益,立即停止使用'mysql_ *'函數,它們已被棄用。 – asprin

回答

2

變化從

$sel="SET @row_num=0; SELECT (@row_num:[email protected]_num+1) AS num,INV,DOS,PTNAME,BAL,PROV from sheet"; 

$sel="SELECT s.*, @rownum := @rownum + 1 AS num FROM sheet s, (SELECT @rownum := 0) r"; 
+0

@manikandan:更新您的查詢 –

+0

感謝兄弟,它工作正常。 – manikandan

+0

歡迎:)我在這裏幫忙 –

2

您的查詢不起作用,因爲您在mysql_query中設置了2個不支持的查詢。而是使用mysqli_multi_query()函數。

無論如何,mysql_*函數已被棄用,所以請使用mysqli_*函數。

$conn = mysqli_connect("localhost", "root", "", "omega"); 

$sel = "SET @row_num=0;"; 
$sel .= "SELECT (@row_num:[email protected]_num+1) AS num, INV, DOS, PTNAME, BAL, PROV from sheet"; 
$sqlquery = mysqli_multi_query($conn, $sel); 

while($dis = mysqli_fetch_array($sqlquery)) 
{ 

// rest of your code 
+0

嗨,感謝您的建議,我仍然嘗試相同的,我仍然得到以下錯誤。 – manikandan

+0

@Panda,你推薦使用'mysqli_multi_query()',但是使用'mysqli_query($ conn,$ sel)'? – Sean

+0

警告:mysqli_fetch_array()期望參數1是mysqli_result,布爾給出 – manikandan

0

我看了看,以爲你是試圖使複雜的,看下面的代碼,很容易爲你的目的

<?php 
$conn = mysql_connect("localhost","root",""); 
mysql_select_db("omega",$conn); 
$sel="SET INV,DOS,PTNAME,BAL,PROV from sheet"; 
$sqlquery=mysql_query($sel); 
$i=0; 
while($dis=mysql_fetch_array($sqlquery)) 
{ 
echo"<tr>"; 
echo "<td>".$i."</td>"; 
echo "<td>".$dis['INV']."</td>"; 
echo "<td>".$dis['DOS']."</td>"; 
echo "<td>".$dis['PTNAME']."</td>"; 
echo "<td>".$dis['BAL']."</td>";  
echo "<td>".$dis['PROV']."</td>";  
echo"</tr>"; 
$i++ 
} 
?> 
+0

我可以使用這種方法,如果我只是想打印數字,但是,我希望我的查詢返回行號基於查詢返回的行號我有其他功能。 – manikandan