Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 处理列的单数记录_Php_Mysql - Fatal编程技术网

Php 处理列的单数记录

Php 处理列的单数记录,php,mysql,Php,Mysql,我有这样一个数据库: ---------------------------------------------- | ID | Time | Typeop | Operator | ---------------------------------------------- | 1 | 10:01 | withdrawal | John | | 2 | 10:01 | deposit | Mike

我有这样一个数据库:

  ----------------------------------------------
  | ID |  Time  |    Typeop     |   Operator   |
  ----------------------------------------------
  |  1 |  10:01 |  withdrawal   |     John     |
  |  2 |  10:01 |  deposit      |     Mike     |
  |  3 |  10:01 |  deposit      |     Andrew   |
  |  4 |  10:02 |  check        |     John     |
  |  5 |  10:02 |  withdrawal   |     Simon    |
  |  6 |  10:03 |  withdrawal   |     Dorothy  |
通过以下查询,我选择了最后三行:

 SELECT * from mytable ORDER BY ID DESC LIMIT 0,3    
问题是:我需要在php脚本中以不同的顺序在脚本的不同位置“回显”最后三个运算符,因此我会将每个名称分配给不同的变量。在本例中:

  • $name0=Dorothy
  • $name1=Simon
  • $name3=John
因此,我将能够把他们(例如)在这样一个文本。。。“多萝西是西蒙之后最后一个动手术的人。约翰今天在三个人之前停了下来……”


Thk预先

将结果放入一个数组中,并使用键
0
1
2
将其作为目标:

$operators = array();

$result = $mysqli->query("SELECT Operator from mytable ORDER BY ID DESC LIMIT 0,3");

if($result)
{
    while($row = $result->fetch_assoc())
    {
        $operators[] = $row['Operator'];
    }
}

if(count($operators) >= 3)
{
    echo htmlentities($operators[0]) . " has been the last to make an operation after " . htmlentities($operators[1]) . ". " . htmlentities($operators[2]) . " today stopped before them";
}
本例使用MySQLi并假设始终有3条记录

编辑:任何MySQL库,例如本机MySQL_*库,其原理相同:

$operators = array();

$result = mysql_query("SELECT Operator from mytable ORDER BY ID DESC LIMIT 0,3");

if($result)
{
    while($row = mysql_fetch_assoc($result))
    {
        $operators[] = $row['Operator'];
    }
}

if(count($operators) >= 3)
{
    echo htmlentities($operators[0]) . " has been the last to make an operation after " . htmlentities($operators[1]) . ". " . htmlentities($operators[2]) . " today stopped before them";
}
//从表中收集数据

//将“mytable”信息放入$info数组

//打印信息

while($info=mysql\u fetch\u数组($data))
{ 
echo“Operator:”.$info['Operator']。”;
} 

您需要将结果存储在一个独立的php数组中

$ops = array();
$result = mysql_query("SELECT Operator from mytable ORDER BY ID DESC LIMIT 0,3");
$i = 0;
if($result)
{
    while($row = mysql_fetch_assoc($result))        
        $ops[$i++] = $row[0];        
}
在这里,
$row
每次更改,它将只保留最新的值,但
$ops
将存储所有值

现在,您可以在任何地方使用此阵列进行所需的输出(直到您更改阵列
$ops


基本上你想做什么?为什么
mike
andrew
不在列表中,因为您是按
id
排序的?您到底有什么问题?是的,我会将一个不同的变量与字段“Operator”的最后选定记录相关联,以便我可以使用该值在文本文件中进行回显。简单地说,我需要独立地处理示例的last-3-names查询的每个元素。考虑到我是新手,也许这是一个非常重要的问题。感谢您,我尝试了您的代码,收到了以下错误:“致命错误:在第5行的/home/mysite/myfile.php中对非对象调用成员函数query()。第5行是“$result=$mysqli->query(“按id描述从mytable ORDER中选择运算符限制0,3”);”。我错在哪里?我是个新手,这就是MySQLi的问题吗?谢谢你的帮助!代码假定您已经创建了一个名为
$mysqli
的mysqli连接对象。如果您还没有这样做,请在开始处添加以下内容:
$mysqli=newmysqli('localhost','username','password','databasename')明显改变细节。我在文件中打开了一个正常的MySQL连接,这是一个问题吗?此外,考虑(如果这应该是有用的),我没有服务器与我,但我正在使用一个远程服务器,一个典型的网站服务器。Bye@mattew参见我的编辑,我给出了一个使用本机mysql库的示例。
 $info = mysql_fetch_array( $data ); 
while($info = mysql_fetch_array( $data )) 
{ 
   echo "<b>Operator:</b> ".$info['Operator'] . " "; 
} 
$ops = array();
$result = mysql_query("SELECT Operator from mytable ORDER BY ID DESC LIMIT 0,3");
$i = 0;
if($result)
{
    while($row = mysql_fetch_assoc($result))        
        $ops[$i++] = $row[0];        
}
$st = $ops[0]." has been the last to make an operation after ".$ops[1].". ".$ops[2]." today stopped before the three...";
echo $st;