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

디비저장관련 질문 하겠습니다. 채택완료

피라미드 2년 전 조회 2,593

안녕하세요 여러분?

그누보드에 입문한지 얼마안되서 어려운부분이 많습니다. 이번에는 저장관련부분 테스트 중인데요

다음과 같이 테이블G5_test_resultus을 임의로 하나 만들어 습니다. 그리고 저장 할려구 테스트 중인데요.. 그게 잘 않되네요... 고수님들 부탁드립니다.. 

if ($is_guest || !$is_member) {     alert('회원만 이용하실 수 있습니다.', G5_URL);     exit; }

$mb_id = $member['mb_id']; $mb = get_member($mb_id);

// 사용자 ID $user_id = $mb['mb_id'];

// 데이타 생성 함수 function generateNumbers($max, $count) {     $numbers = range(1, $max);     shuffle($numbers);     return array_slice($numbers, 0, $count); }

// 데이타 생성 $test_numbers = generateNumbers(10, 20);

// 결과 데이터베이스에 저장 $numbers_json = json_encode($g5_test_numbers);  $query = "INSERT INTO g5_test_results (user_id, numbers, created_at) VALUES ('$user_id', '$numbers_json', NOW())"; if ($conn->query($query) === TRUE) {     echo "성공적으로 저장되었습니다."; } else {     echo "저장에 실패했습니다."; }

// 데이터베이스 연결 종료 $conn->close(); ?>

이렇게 하면 저장되어야 할것 같은데 실패 로 나타납니다. 어디에 문제점이 있을까요?  

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

답변 3개

채택된 답변
+20 포인트

다음과 같이해볼 수 있을것 같습니다

</p>

<p><?php

include_once ('./_common.php');</p>

<p>if ($is_guest || !$is_member) {

    alert('회원만 이용하실 수 있습니다.', G5_URL);

    exit;

}</p>

<p>$mb_id = $member['mb_id'];

$mb = get_member($mb_id);</p>

<p>// 사용자 ID

$user_id = $mb['mb_id'];</p>

<p>// 데이타 생성 함수

function generateNumbers($max, $count) {

    $numbers = range(1, $max);

    shuffle($numbers);

    return array_slice($numbers, 0, $count);

}</p>

<p>// 데이타 생성

$test_numbers = generateNumbers(10, 20);</p>

<p>// 결과 데이터베이스에 저장

$numbers_json = json_encode($test_numbers); 

$query = "INSERT INTO g5_test_results (user_id, numbers, created_at) VALUES ('$user_id', '$numbers_json', NOW())";</p>

<p>// 데이터베이스 연결

$conn = sql_connect($mysql_host, $mysql_user, $mysql_password, $mysql_db);

if (!$conn) {

    die('데이터베이스 연결에 실패했습니다.');

}</p>

<p>if (sql_query($query, $conn)) {

    echo "성공적으로 저장되었습니다.";

} else {

    echo "저장에 실패했습니다.";

}</p>

<p>// 데이터베이스 연결 종료

sql_close($conn);

?>

 

1. $test_numbers 변수와 $g5_test_numbers 변수를 일치하게 수정. 2. $conn 변수를 데이터베이스 연결에 사용하도록 수정. 3. 테이블 이름을 g5_test_results로 수정.

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

답변에 대한 댓글 6개

피라미드
2년 전
네 g5_test_모두 두정정 했습니다.. 그런데 결과는 실패했습니다. ;;또다른 문제 점 있을까요?
웹메이킹
2년 전
[code]
<?php
// 그누보드 공통 파일 포함
include_once('./_common.php'); // 실제 경로로 수정

// 로그인 여부 체크
if ($is_guest || !$is_member) {
alert('회원만 이용하실 수 있습니다.', G5_URL);
exit;
}

// 사용자 ID
$user_id = $member['mb_id'];

// 데이타 생성 함수
function generateNumbers($max, $count) {
$numbers = range(1, $max);
shuffle($numbers);
return array_slice($numbers, 0, $count);
}

// 데이타 생성
$test_numbers = generateNumbers(10, 20);

// 결과 데이터베이스에 저장
$numbers_json = json_encode($test_numbers);

// 데이터베이스에 저장
$sql = "INSERT INTO {$g5['test_results_table']} (user_id, numbers, created_at) VALUES ('$user_id', '$numbers_json', NOW())";
$result = sql_query($sql);

// 저장 결과 확인
if ($result) {
echo "성공적으로 저장되었습니다.";
} else {
echo "저장에 실패했습니다.";
}
?>

[/code]

$mysql_host, $mysql_user, $mysql_password, $mysql_db 변수 대신 $g5 전역 변수를 사용으며. $g5 변수는 그누보드에서 정의되는 데이터베이스 정보를 포함하고 있습니다.

g5_test_results 테이블 대신 $g5['test_results_table'] 변수를 사용함. 이 변수는 그누보드 설정 파일에서 정의된 테이블 이름을 가져옵니다.

sql_query() 함수를 사용하여 쿼리를 실행. sql_query() 함수는 그누보드에서 데이터베이스 작업을 수행하는 데 사용되는 함수입니다.

g5_test_results 테이블이 데이터베이스에 올바르게 생성되었는지 확인.
데이터베이스 접속 정보가 올바른지 확인합니다. 그누보드 설정 파일(dbconfig.php)에서 $mysql_host, $mysql_user, $mysql_password, $mysql_db 값을 확인합니다.

참고로
[code]
$conn = sql_connect($mysql_host, $mysql_user, $mysql_password, $mysql_db);
if (!$conn) {
die('데이터베이스 연결에 실패했습니다. 오류: ' . sql_error());
}
[/code]
오류 메시지가 출력되어 데이터베이스 연결에 문제가 있는 경우 더 자세한 원인을 파악 할 수 있습니다

참고하셔서 테스트 해보세요
피라미드
2년 전
_config.php? common.php 아니구요?
웹메이킹
2년 전
/data/dbconfig.php 입니다.
피라미드
2년 전
위에서 수정해야할게 뭐가있죠 디비 접근 방식이 틀린건가요? 아니면 개인적 테이블 접속은 로직세워야하는지요? 여러 방법으로 save를 시도 해봤지만 저장을안하니 미치겟습니다.. ㅋㅋ ajax 문제 있나 j쿼리가 문제 있나 다 확인 테스트 해보구 하다못해 text 데이타 저장식으로 했봣지만 다 정상적으로 세이브가 됩니다. 근데 디비만 안되요 ㅋ;; 환장하겠음.
웹메이킹
2년 전
구체적으로 원하시는게 어떤건지 파악하기가 어렵네요..
그냥 DB 저장하는 거라면 위의 방식으로하면 DB저장은 될텐데요..
[code]
$conn = sql_connect($mysql_host, $mysql_user, $mysql_password, $mysql_db);
if (!$conn) {
die('데이터베이스 연결에 실패했습니다. 오류: ' . sql_error());
}
[/code]
이부분을 참고하셔서 DB 연결실패시 어떠한 오류 메세지가 출력되는지 확인해보세요

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

웅푸
2년 전

내 해결은 되었습니다 많은 답변 감사합니다.^^

참고로 요문제를.... 필드명도 체인지하고 암튼 이틀밤세서 요래 간략 하게 해결봄요 ---;;; 

include_once('./_common.php');

 

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    $mb_id = $_POST['mb_id'] ?? '';

    $numbers = $_POST['numbers'] ?? '';

 

    // 데이터베이스에 저장

    $numbers_json = json_encode($numbers);

 

    $sql = "INSERT INTO g5_test_results (mb_id, numbers, created_at) VALUES ('$mb_id', '$numbers_json', NOW())";

    $result = sql_query($sql);

 

    echo $result ? 'success' : 'error: ' . sql_error();

} else {

    echo 'Invalid request';

}

?>

 

근데 그누에서는 디비테이블 명 적을때 접두사명 안적도 되는것 아닌가요?

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

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

2년 전

1)

if ($conn->query($query) === TRUE) {

->

if (sql_query($query)) {

 

2)

// 데이터베이스 연결 종료

$conn->close();

 

삭제

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

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

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

로그인