php 버전에 따라서 퀴리가 달라져야 하는 것일까요? ㅜㅜ
본문
1개의 데이타만 뽑아서 wr_id, wr_subject 등의 값을 추출하려고 하는데요, 동일한 내용을 2군데에서 사용하고 잇는데요, php 7.4.9 환경에서 잘 되고 있는데 php7.4 에서는 안되는데 쿼리를 어떻게 고쳐야 할까요?
$link_forview = "12345" ;
$sql11 = "select wr_id, wr_subject, wr_1 from g5_write_hbp_board where wr_link2 = '{$link_forview}' limit 1" ;
$result11 = $mysqli->query($sql11);
$row11 = mysqli_fetch_array($result11);
이때 $row11['wr_subject'] $row11['wr_id'] 등의 값이 추출되지 않네요 초보자라서 좀 서툴지만 양해부탁합니다
답변 1
PHP 7.4.9에서 잘 작동하던 코드가 PHP 7.4 (다른 서버 환경?)에서는 동작하지 않는 문제는 PHP 버전 차이보다는, MySQLi 설정, 연결 방식, 또는 쿼리 실행 방식 문제일 가능성이 높습니다.
아래에서 하나씩 점검해드릴게요.
✅ 우선 기본 확인: $mysqli 객체가 제대로 연결되어 있는지?
$mysqli = new mysqli(...); 와 같은 연결이 정상적으로 이루어졌는지 먼저 확인이 필요합니다.
if ($mysqli->connect_errno) {
echo "MySQL 연결 실패: " . $mysqli->connect_error;
exit;
}
핵심 문제: mysqli_fetch_array() 대신 mysqli_fetch_assoc() 사용 권장
$row11 = mysqli_fetch_array($result11);
이 코드는 기본적으로 연관배열 + 숫자 인덱스 배열을 모두 포함하지만, 일부 설정에서는 제대로 동작하지 않을 수 있어요.
? 해결 방법:
$row11 = mysqli_fetch_assoc($result11);
이렇게 하면 ['wr_subject'], ['wr_id'] 등 연관 배열 키로만 안전하게 접근할 수 있습니다.
<?php
$link_forview = "12345";
// DB 연결
$mysqli = new mysqli("localhost", "db_user", "db_pass", "db_name");
if ($mysqli->connect_errno) {
echo "MySQL 연결 실패: " . $mysqli->connect_error;
exit;
}
// 쿼리 실행
$sql11 = "SELECT wr_id, wr_subject, wr_1 FROM g5_write_hbp_board WHERE wr_link2 = '{$link_forview}' LIMIT 1";
$result11 = $mysqli->query($sql11);
if ($result11 && $row11 = mysqli_fetch_assoc($result11)) {
echo "ID: " . $row11['wr_id'] . "<br>";
echo "제목: " . $row11['wr_subject'] . "<br>";
echo "wr_1: " . $row11['wr_1'] . "<br>";
} else {
echo "데이터를 찾을 수 없습니다.";
}
?>
chatgpt 답변입니다.