如何在 PHP 应用程序中打印 mysql 中的行号
How to print row number in mysql in PHP application
我有一个 mysql table 需要在前端应用程序中显示数据以及行号。以下查询在 phpMyadmin
中完美运行
SET @row_num=0; SELECT (@row_num:=@row_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:=@row_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>";
}
您的查询无效,因为您在 mysql_query
中设置了 2 个不受支持的查询。而是使用 mysqli_multi_query()
函数。
无论如何,mysql_*
函数已被弃用,因此请改用 mysqli_*
函数。
$conn = mysqli_connect("localhost", "root", "", "omega");
$sel = "SET @row_num=0;";
$sel .= "SELECT (@row_num:=@row_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
我看了看,觉得你想把它弄复杂,看下面的代码,很容易达到你的目的
<?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++
}
?>
变化自
$sel="SET @row_num=0; SELECT (@row_num:=@row_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";
我在这里为您提供解决方案,您将如何使用 PHP 和 MYSQL 获得总行数。请看下面的代码。
<?php
$pdoconnection =
"mysql:host=localhost;dbname=database_name;charset=utf8mb4";
$options = [
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
try {
$pdo = new PDO($pdoconnection, "userName", "passWord", $options);
$emp=$pdo->prepare("SELECT count(*) FROM emp_tab");
$emp->execute();
$emprow = $emp->fetch(PDO::FETCH_NUM);
//total count
$empcount = $emprow[0];
} catch (Exception $e) {
error_log($e->getMessage());
exit('oops ! some problems');
}
?>
我希望,您会对使用 php 和 mysql 来获取总行数有所了解。
我有一个 mysql table 需要在前端应用程序中显示数据以及行号。以下查询在 phpMyadmin
中完美运行SET @row_num=0; SELECT (@row_num:=@row_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:=@row_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>";
}
您的查询无效,因为您在 mysql_query
中设置了 2 个不受支持的查询。而是使用 mysqli_multi_query()
函数。
无论如何,mysql_*
函数已被弃用,因此请改用 mysqli_*
函数。
$conn = mysqli_connect("localhost", "root", "", "omega");
$sel = "SET @row_num=0;";
$sel .= "SELECT (@row_num:=@row_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
我看了看,觉得你想把它弄复杂,看下面的代码,很容易达到你的目的
<?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++
}
?>
变化自
$sel="SET @row_num=0; SELECT (@row_num:=@row_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";
我在这里为您提供解决方案,您将如何使用 PHP 和 MYSQL 获得总行数。请看下面的代码。
<?php
$pdoconnection =
"mysql:host=localhost;dbname=database_name;charset=utf8mb4";
$options = [
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
try {
$pdo = new PDO($pdoconnection, "userName", "passWord", $options);
$emp=$pdo->prepare("SELECT count(*) FROM emp_tab");
$emp->execute();
$emprow = $emp->fetch(PDO::FETCH_NUM);
//total count
$empcount = $emprow[0];
} catch (Exception $e) {
error_log($e->getMessage());
exit('oops ! some problems');
}
?>
我希望,您会对使用 php 和 mysql 来获取总行数有所了解。