2011-04-01 15 views
7

Duplicar posible:
PHP PDO bindValue in LIMITLÍMITE DOP y OFFSET

no podía mostrar los datos cuando se utiliza LIMIT y/o compensados ​​en el estado de preparar, pero puedo mostrar "Lei Lei "si no uso el LÍMITE y el DESPLAZAMIENTO, ¿el código se ve mal?

$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)); 

esto han sido el cambio del código original que funcionó:

$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

algún motivo que se está ejecutando '$ Sentencia-> execute()' dos veces? ¿Y está usando '$ statement-> fetch()' o '$ statement-> fetchAll()' después de ejecutar para recuperar los resultados? – chriso

+0

Actualizo mi publicación, estoy usando $ statement-> fetch() – proyb2

Respuesta

0

Editar: Fijo

$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

Aún no se mostrará. – proyb2

+0

@ proyb2 intente sin el DESPLAZAMIENTO como en su consulta original: 'SELECT id, nombre de usuario FROM public2 WHERE username =: nombre LIMIT $ start, $ per_page' – chriso

+0

Veo, entonces ¿cómo puedo agregar el LIMIT en la declaración de preparación? – proyb2

16

he encontrado la respuesta!

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

hace trabajar

+0

Gracias. Me preguntaba por qué mi LIMIT: count no funcionaba. Parece que fue lanzado como una cadena. – taco

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

le permitirá enlazar las variables sin ser molestado de ellos tipo

+0

¿por qué incluso harías esto al agregar PDO :: PARAM_INT después de que funcione la llamada? – Stephen

+1

@Stephen porque hace que agregar PDO :: PARAM_INT sea innecesario, tonto :) –

+0

+1 ¡Gracias! :) – Gavin