디비저장관련 질문 하겠습니다. 채택완료
안녕하세요 여러분?
그누보드에 입문한지 얼마안되서 어려운부분이 많습니다. 이번에는 저장관련부분 테스트 중인데요
다음과 같이 테이블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개
다음과 같이해볼 수 있을것 같습니다
</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개
<?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]
오류 메시지가 출력되어 데이터베이스 연결에 문제가 있는 경우 더 자세한 원인을 파악 할 수 있습니다
참고하셔서 테스트 해보세요
그냥 DB 저장하는 거라면 위의 방식으로하면 DB저장은 될텐데요..
[code]
$conn = sql_connect($mysql_host, $mysql_user, $mysql_password, $mysql_db);
if (!$conn) {
die('데이터베이스 연결에 실패했습니다. 오류: ' . sql_error());
}
[/code]
이부분을 참고하셔서 DB 연결실패시 어떠한 오류 메세지가 출력되는지 확인해보세요
댓글을 작성하려면 로그인이 필요합니다.
내 해결은 되었습니다 많은 답변 감사합니다.^^
참고로 요문제를.... 필드명도 체인지하고 암튼 이틀밤세서 요래 간략 하게 해결봄요 ---;;;
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';
}
?>
근데 그누에서는 디비테이블 명 적을때 접두사명 안적도 되는것 아닌가요?
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인