2011-09-12 2 views
0

페이지에서 다음 및 이전 버튼을 만들려고합니다. id를 사용하여 데이터베이스에서 정보를 호출하고 ID 변수를 사용하여 새 행과 이전 행을 선택합니다.탐색을위한 다음 및 이전 버튼 만들기

그것은 다음 버튼 작동하지만, 이전 버튼이 PHP에서 내 기능 1.

의 ID를 반환 유지 :

function getNavLinks($subj) { 
global $connection; 
$query = "SELECT 
(SELECT id FROM artists WHERE id > " . $subj . " LIMIT 1) 
AS nextValue, 
(SELECT id FROM artists WHERE id < " . $subj . " LIMIT 1) 
AS prevValue 
FROM artists"; 
$result_set = mysql_query($query, $connection); 
confirmQuery($result_set); 
//if no rows are returned, fetch array will return false. 
if ($Links = mysql_fetch_array($result_set)) { 
    return $Links; 
} 
else { 
    return NULL; 
} 
} 

내가 html로 머리처럼 그것을 호출 오전 이 :

<?php 
$subj = $_GET['subj']; 
$navLink = getNavLinks($subj); 
?> 

과 같은 신체의 :

<?php echo "<a href=\"artist.php?subj=" . urlencode($navLink['prevValue']) . "\">Prev</a>"; ?>&nbsp; 
<?php echo "<a href=\"artist.php?subj=" . urlencode($navLink['nextValue']) . "\">Next</a>"; ?> 

$ navLink [ 'prevValue']가 1의 값을 반환하는 이유는 무엇입니까?

도움이 될 것입니다.

+0

당신은 SQL 주입 구멍이 –

+0

나는 $ navLink가 배열 생각하고 $ navLink [ '에 prevValue'] 그 배열의에 prevValue에 액세스하는 것 따옴표로 묶지 않은 $ vars를 쿼리에 삽입하지 마십시오. 그리고 mysql_real_escape_string()을 사용하여 vars를 인젝션하기 전에 이스케이프하는 것을 잊지 마십시오. – Johan

답변

1

당신이 당신의 SQL 문을 변경해야

"SELECT 
(SELECT id FROM artists WHERE id > '$subj' LIMIT 1) 
AS nextValue, 
(SELECT id FROM artists WHERE id < '$subj' ORDER BY id DESC LIMIT 1) 
AS prevValue 
FROM artists" 
+0

나중에 SQL 주입 구멍을 수정했습니다. – Johan

+0

그의 질문이 아니었지만 어, 고마워. – SBerg413

+0

도움 주셔서 감사합니다. 잘 했어! –

관련 문제