PHP以另一种方式获取表的数据?

PHP以另一种方式获取表的数据?,php,ms-access,odbc,Php,Ms Access,Odbc,表中总共有42条记录。问题是我的一列,它指示休假的类型,是call$empType。在该表的我的列中,$empType的第24条记录称为“病假”,但由于while循环,$empType仅显示第42条记录,因此整个if语句不起作用 我不希望它只显示第24条记录,因为我知道odbc\u fetch\u row也可以工作,但我希望它能够一直循环并捕获每一行的所有数据 $conn=odbc_connect("employee","","") or die (odbc_errormsg()); $sql

表中总共有42条记录。问题是我的一列,它指示休假的类型,是call
$empType
。在该表的我的列中,
$empType
的第24条记录称为“病假”,但由于while循环,
$empType
仅显示第42条记录,因此整个if语句不起作用

我不希望它只显示第24条记录,因为我知道
odbc\u fetch\u row
也可以工作,但我希望它能够一直循环并捕获每一行的所有数据

$conn=odbc_connect("employee","","") or die (odbc_errormsg());

$sql1="SELECT * FROM employee WHERE Status='Pending'";
$rs1=odbc_exec($conn,$sql1);
while (odbc_fetch_row($rs1))
{
$leaveID=odbc_result($rs1,"Leave ID");
$empID=odbc_result($rs1,"empID");
$empType=odbc_result($rs1,"TypeOfLeave");
}

if ($status == "Approved" && $empType == "Medical Leave")
{
my code
}

echo $empType;
有人能帮我渡过难关吗?我真的需要把这件事做完


我使用的是Microsoft access数据库ODBC。

正如Jon指出的,您的if需要在while中,但是,您也从不定义$status,这样无论它在哪里,if都不会运行。您在
while
中循环遍历该
中的每一行数据,但是您有一个
if
语句,该语句保存在
while
循环之外的每个循环中重新声明的var的条件

您需要在
while
中包含
if

$conn=odbc_connect("employee","","") or die (odbc_errormsg());

$sql1="SELECT * FROM employee WHERE Status='Pending'";
$rs1=odbc_exec($conn,$sql1);
while (odbc_fetch_row($rs1))
{
$leaveID=odbc_result($rs1,"Leave ID");
$empID=odbc_result($rs1,"empID");
$empType=odbc_result($rs1,"TypeOfLeave");

if ($status == "Approved" && $empType == "Medical Leave")
{
my code
}//end of if

}//end of while

echo $empType;

循环内的代码基本上什么都不做,而要在每一行上运行的代码在循环外。还有什么要说的呢?我试着把while循环放在if循环之后。但它不起作用。我忘了在代码中输入$status。我想我得想个办法,我现在太迷茫了,什么都做不了,谢谢你,先生:)。你是说它真的在那里,只是不在你发布的版本中?除此之外,您只需将while的结束括号移动到end@user127886没问题。不过,我确实看到了代码中的一个小问题:您的查询包含
“WHERE Status='Pending'”
。稍后,我们将检查
$status==“已批准”
。它永远不能被“批准”
,因为这些结果是从查询中筛选出来的。
<?php
$conn = odbc_connect("employee","","") or die (odbc_errormsg());

$sql1 = "SELECT * FROM employee WHERE Status='Pending'";
$rs1 = odbc_exec($conn,$sql1);

while(odbc_fetch_row($rs1)) {
    $leaveID=odbc_result($rs1,"Leave ID");
    $empID=odbc_result($rs1,"empID");
    $empType=odbc_result($rs1,"TypeOfLeave");
    $status = odbc_result($rs1,"Status"); // added this.


    // moved to the while loop.
    if( $empType === 'Medical Leave' && $status === 'Approved' ) {
        // your code.
    }
}
<?php
$dbh = new Pdo( 'odbc:MSSQLServer', 'username', 'password' );

$results = $dbh->query( 'SELECT * FROM employee', PDO::FETCH_ASSOC );

foreach( $results as $result ) {
    if( $result['TypeOfLeave'] === 'Medical Leave' && $result['Status'] === 'Approved' ) {
        // your code here.
    }
}
<?php
$conn = odbc_connect("employee","","") or die (odbc_errormsg());

$sql1 = "SELECT * FROM employee WHERE Status='Pending'";
$rs1 = odbc_exec($conn,$sql1);

$rows = array( );

while(odbc_fetch_row($rs1)) {
    $rows[] = array(
        'leave ID' => odbc_result( $rs1, 'Leave ID' ),
        'empID' => odbc_result( $rs1, 'empID' ),
        'empType' => odbc_result( $rs1, 'empType' ),
        'status' => odbc_result( $rs1, 'Status' ),
    );
}

// $rows now contains *all* rows, which you can loop over later.

// some more code here.

foreach( $rows as $row ) {
    if( $row['status'] === 'Approved' && 'empType' === 'Medical Leave' ) {
        // your code here.
    }
}