试图在php中获取非对象的属性

时间:2015-07-16 06:09:44

标签: php mysqli

我收到错误

  

“试图获取非对象的属性”on:if($ result4-> num_rows>   0)。

为什么会这样?以及如何防止它再次发生。我刚刚开始使用php ...可以解决吗? 提前谢谢。

rs = stmt.executeQuery("select"
+" sum(pr.amount)"
+" from trans_log tl,"
+" payment_detail pp,"
+" pft_trans_reltn pr,"
+" pft_encntr pe,"
+" encounter e,"
+" account a"
+" where"
+" pr.beg_effective_dt_tm >= TO_DATE('01/JUN/2015 00:00:00', 'dd/mm/yy hh24:mi:ss') AND pr.beg_effective_dt_tm <= TO_DATE('30/JUN/2015 23:59:59', 'dd/mm/yy hh24:mi:ss')"
+" and pp.payment_detail_id=tl.payment_detail_id"
+" and tl.activity_id=pr.activity_id"
+" and tl.active_ind=1"
+" and tl.trans_type_cd=10982.00"
+" and pr.parent_entity_name='PFTENCNTR'"
+" and pe.pft_encntr_id=pr.parent_entity_id"
+" and a.acct_id=pe.acct_id"
+" and a.acct_type_cd=649377.00"
+" and pe.encntr_id=e.encntr_id"
+" and e.organization_id=589723.00");

2 个答案:

答案 0 :(得分:0)

不要混用mysqli fuctionsOOP概念 试试这个代码

if (isset($_POST['submit'])) 
{
    if (isset($_POST['AFNumber'])) {
    $sql = "SHOW COLUMNS FROM Employees";
    $result = mysqli_query($con,$sql);
     while($row = mysqli_fetch_array($result)){
                $tempname = $row['Field'];

                // Changes Function
                $sqlCheck = "SELECT * FROM Employees WHERE AFNumber='".$_GET["af"]."' AND (".$row['Field']." NOT LIKE '".$_POST[$tempname]."')";
                $result3 = mysqli_query($con,$sqlCheck);
                if (mysqli_num_rows($result3) > 0) {
                // output data of each row
                while($row3 = mysqli_fetch_array($result3)) {
                    $sql3 = "INSERT INTO `Changes` (`Table`, `AFNumber`, `Attribute`, `DateChanged`, `HRUser`, `OldValue`, `NewValue`)

VALUES ('Employees', '".$_GET["af"]."', '".$row["Field"]."', '".date("d/m/Y h:i:sa")."', '$login_session', '$row3[$tempname]', '$_POST[$tempname]')";
                    if (mysqli_query($con,$sql3) === TRUE) {
                    } else {
                    echo "Error: " . $sql3 . "<br>" . mysqli_error($con);
                    }
                }
                }
                //End Changes Function


                $sql2 = "UPDATE Employees SET ".$row['Field']."= '$_POST[$tempname]' WHERE AFNumber='".$_GET["af"]."'";
                $result2 = mysqli_query($con,$sql2);
                if (mysqli_query($con,$sql2) === TRUE) {
                } else {
                    echo "Error: " . $sql2 . "<br>" . mysqli_error($con);
                    echo '<script>swal("Error", "Something went wrong '.mysqli_error($con).'", "error");</script>';
                }

}       




    echo '<script>swal("Success", "Changes have been saved", "success");</script>';
} //End If POST Submit True
    else{

     $sql = "SHOW COLUMNS FROM Candidates";
    $result = mysqli_query($con,$sql);
     while($row = mysqli_fetch_array($result)){
                $tempname = $row['Field'];


            // Changes Function
                $sqlCheck = "SELECT * FROM Candidates WHERE CID='".$_GET["cid"]."' AND (".$row['Field']." NOT LIKE '%".$_POST[$tempname]."%')";
                $result4 = mysqli_query($con,$sqlCheck);
                if (mysqli_num_rows($result4) > 0) {
                // output data of each row
                while($row4 = mysqli_fetch_array($result4)) {
                    $sql4 = "INSERT INTO `Changes` (`Table`, `AFNumber`, `Attribute`, `DateChanged`, `HRUser`, `OldValue`, `NewValue`)

VALUES ('Candidates', '".$_GET["cid"]."', '".$row["Field"]."', '".date("d/m/Y h:i:sa")."', '$login_session', '$row4[$tempname]', '$_POST[$tempname]')";
                    if (mysqli_query($con,$sql4) === TRUE) {
                    } else {
                    echo "Error: " . $sql4 . "<br>" . mysqli_error($con);
                    }
                }
                }



    }

    echo '<script>swal("Success", "Changes have been saved", "success");</script>';


    }}

答案 1 :(得分:0)

@Dan,我看到你接受了答案,但我也想补充一点。

这里有一些问题(见评论),而不是“修复”问题。 (我会在任何一天的程序中使用OOP)代码让我们解释你的问题。您收到错误的原因是因为您的选择查询(出于某种原因)失败,导致#mydiv { max-height:100px; overflow-y:scroll; position : relative; } false 所以当您致电$result4时得到上述错误。

尝试更新这些行:

$result4->num_rows

用这个:

$result4 = $con->query($sqlCheck);
if ($result4->num_rows > 0) {

这应该告诉你sql语句中的错误是什么,以便你自己修复它,并且无需检查if (($result4 = $con->query($sqlCheck)) === false) { echo 'error: '.$con->error; } else { (你现在不需要)

注意:您应该始终检查sql查询的结果并尝试以某种方式处理错误 - 不要假设您的查询总是成功!