PHP以另一种方式获取表的数据?
表中总共有42条记录。问题是我的一列,它指示休假的类型,是callPHP以另一种方式获取表的数据?,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
$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.
}
}