PHP7.2 에러 좀 봐주세요.

PHP7.2 에러 좀 봐주세요.

QA

PHP7.2 에러 좀 봐주세요.

본문

G5 스킨 수정중에 아래와 같은 에러 메세지가 뜹니다.

Warning: count(): Parameter must be an array or an object that implements Countable in /www_root/theme/simple_theme/skin/board/search/skin.lib.php on line 33

 

PHP7.2 버전에서 체크하는 오류인 것 같은데요. 아래 소스를 어떻게 수정해 주어야 할까요?

해당파일 (skin.lib.php) 의 33라인 이후 내용은 아래와 같습니다.

 

....................... (33라인 )...........................

        if(count($search_arr['name']) > 0){
            $se_flag = 0;
            for($j = 0; $j < count($search_arr['name']); $j++){
                if(is_array($search_arr['val'][$j])){
                    $str2 = "";

                    for($x = 0; $x < count($search_arr['val'][$j]);$x++){
                        $str2 = append_sql2($str2, " or ", " {$search_arr['name'][$j]} like '%{$search_arr['val'][$j][$x]}%' ");
                    }
                    $str2 = " (".$str2.") ";
                    $str = append_sql2($str, " and", $str2);

                }else if(strlen($search_arr['val'][$j]) > 0 && $search_arr['val'][$j] ){
                            $str = append_sql2($str, " and ", " {$search_arr['name'][$j]}  like '%{$search_arr['val'][$j]}%' ");
                        
                    
                }
            }
        }
 

 

이 질문에 댓글 쓰기 :

답변 2

if (count($search_arr['name']) > 0) {

를 

$cnt = is_array($search_arr['name']) ? count($search_arr['name']) : 0;

if($cnt > 0){

.

.

.

 


if (count($search_arr['name']) > 0) {
    $str = '';
    $params = [];
    $se_flag = 0;
    for ($j = 0; $j < count($search_arr['name']); $j++) {
        $field = $search_arr['name'][$j];
        $value = $search_arr['val'][$j];
        if (is_array($value)) {
            $subConditions = [];
            foreach ($value as $subValue) {
                if (trim($subValue) !== '') {
                    $subConditions[] = "{$field} LIKE ?";
                    $params[] = "%{$subValue}%";
                }
            }
            if (count($subConditions) > 0) {
                $str .= '(' . implode(' OR ', $subConditions) . ') AND ';
            }
        } else if (trim($value) !== '') {
            $str .= "{$field} LIKE ? AND ";
            $params[] = "%{$value}%";
        }
    }
    if (!empty($str)) {
        $str = substr($str, 0, -5); // remove trailing 'AND'
        $where = "WHERE {$str}";
    } else {
        $where = '';
    }
} else {
    $where = '';
}
// Example query using the generated WHERE clause and the bound parameters
$sql = "SELECT * FROM my_table {$where}";
$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
답변을 작성하시기 전에 로그인 해주세요.
전체 688
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT