PHP Mysql with fetch array


PHP Mysql with fetch array

$bagianWhere = "";
if (isset($_POST['chkBadge']))
{
    $badge_id = $_POST['badge_id'];
    if (empty($bagianWhere))
    {
        $bagianWhere .= "t_emp.badge_id = t_balance.badge_id".
                        "and E.badge_id = '$badge_id'";
    }
}
$query = "SELECT t_emp.badge_id, t_emp.emp_name,
                 t_balance.badge_id, t_balance.balance_amount
          FROM   t_emp, t_balance 
          WHERE  ".$bagianWhere ;
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))

我不知道我的PHP代码发生了什么。我努力了,但仍然面临这样的错误问题:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ...

请任何人建议。

我不是在测试,而是替换您的查询

$query = "SELECT t_emp.badge_id, t_emp.emp_name,
                                    t_balance.badge_id, t_balance.balance_amount
                                    from t_emp, t_balance WHERE 
                        '".$bagianWhere."'" ;

您的查询返回错误,因此mysql_query返回 FALSE。这会导致mysql_fetch_array失败。

最有可能$badge_id为空(您确实检查是否设置了 chkBadge,但如果设置了badge_id则不检查(。回显您的查询并通过 MySQL 手动运行它以验证其正确性。

我认为结果中没有匹配的记录,或者替换值时您的查询中可能存在一些错误。因此,它返回布尔值 false,这是一个布尔值。因此,请尝试直接在MySQL中执行查询。

按如下方式进行更改:

1)  $bagianWhere .= " where t_emp.badge_id = t_balance.badge_id and E.badge_id = '$badge_id'";

2)  $query = "SELECT t_emp.badge_id, t_emp.emp_name,
                                        t_balance.badge_id, t_balance.balance_amount
                                        from t_emp, t_balance  
                            ".$bagianWhere ;

在您的情况下,如果条件为 false,查询将变为如下所示:

SELECT t_emp.badge_id, t_emp.emp_name, t_balance.badge_id, t_balance.balance_amount where  from t_emp, t_balance

尝试如下:

$bagianWhere = "";
        if (isset($_POST['chkBadge']))
        {
            $badge_id = $_POST['badge_id'];
            if (empty($bagianWhere))
            {
                $bagianWhere .= " where t_emp.badge_id = t_balance.badge_id and E.badge_id = '$badge_id'";
            }
        }
        $query = "SELECT t_emp.badge_id, t_emp.emp_name,
                                    t_balance.badge_id, t_balance.balance_amount
                                    from t_emp, t_balance  
                        ".$bagianWhere ;
                        $hasil = mysql_query($query);
                        while ($data = mysql_fetch_array($hasil))