2011-04-01 3 views
7

가능한 중복 :
PHP PDO bindValue in LIMITPDO의 LIMIT와 OFFSET

LIMIT를 사용할 때 데이터를 표시 할 수 및/또는 준비 문에서 OFFSET,하지만 레이 레이 "표시 할 수 있습니다 "LIMIT 및 OFFSET을 사용하지 않으면 코드가 잘못 보이나요?

$statement = $conn->prepare("SELECT id,username FROM public2 WHERE username = :name LIMIT :sta OFFSET :ppage"); 
$name = "Lei Lei"; 
$statement->execute(array(':name' => $name,':sta' => $start,':ppage' => $per_page)); 

이 일을 원래의 코드에서하고 변화가 있습니다

$query_pag_data = "SELECT id,username from public2 LIMIT $start, $per_page"; 
$result_pag_data = mysql_query($query_pag_data) or die('MySql Error' . mysql_error()); 
+0

당신은'$ 명령문 ->()가'두 번 실행 실행중인 모든 이유? 결과를 얻기 위해 실행 한 후에'$ statement-> fetch()'또는'$ statement-> fetchAll()'을 사용하고 있습니까? – chriso

+0

내 게시물을 업데이트하고 $ statement-> fetch()를 사용하고 있습니다. – proyb2

답변

0

편집 : 고정

$statement = $conn->prepare("SELECT id,username FROM public2 WHERE username = :name LIMIT :limit OFFSET :offset"); 
$name = "Lei Lei"; 
$statement->bindValue(':name', $name); 
$statement->bindValue(':limit', (int) $start, PDO::PARAM_INT); 
$statement->bindValue(':offset', (int) $per_page, PDO::PARAM_INT); 
$statement->execute(); 
+0

여전히 표시되지 않습니다. – proyb2

+0

@ proyb2 원래의 쿼리와 같이 OFFSET을 사용하지 않고 시도해보십시오 :'SELECT id, username FROM public2 WHERE username = : name LIMIT $ start, $ per_page' – chriso

+0

준비 문에 LIMIT를 어떻게 추가 할 수 있습니까? – proyb2

16

내가 답을 찾았을!

$statement->bindValue(':sta1', (int) $start, PDO::PARAM_INT); 

+0

감사합니다. 왜 내 한계가 작동하는지 궁금해. 그것은 문자열로 캐스팅 된 것 같습니다. – taco

5
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

은 사용자가 입력하는 그들을 방해하지 않고 변수를 결합하게됩니다 작동하지

+0

호출이 작동 한 후 PDO :: PARAM_INT를 추가 할 때 왜이 작업을 수행합니까? – Stephen

+1

@Stephen PDO :: PARAM_INT를 불필요하게 추가하게 만들기 때문에 바보입니다. –

+0

+1 Thankyou !! :) – Gavin

관련 문제