테스트 사이트 - 개발 중인 베타 버전입니다

PHP7.2 에러 좀 봐주세요. 채택완료

동물원 2년 전 조회 2,026

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개

채택된 답변
+20 포인트
m
2년 전
if (count($search_arr['name']) > 0) {

를 

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

if($cnt > 0){

.

.

.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

동물원
2년 전
주신 소스로 적용해서 잘 해결했습니다. 정말 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

들레아빠

</p>

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

    $str = '';

    $params = [];

    $se_flag = 0;</p>

<p>    for ($j = 0; $j < count($search_arr['name']); $j++) {

        $field = $search_arr['name'][$j];

        $value = $search_arr['val'][$j];</p>

<p>        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}%";

        }

    }</p>

<p>    if (!empty($str)) {

        $str = substr($str, 0, -5); // remove trailing 'AND'

        $where = "WHERE {$str}";

    } else {

        $where = '';

    }

} else {

    $where = '';

}</p>

<p>// 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);

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

동물원
2년 전
답변 감사합니다. 제가 적용을 잘 못했는지 해결되지는 못했지만 상세소스 까지 작성해 주셔서 정말 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인