He encontrado muchas formas de utilizar la declaración ejecutiva para PDO, pero no estoy seguro de que me ayude. Mi entendimiento es que tengo que usar la función execute() para las declaraciones preparadas. Estoy actualizando una fila con datos de la entrada del usuario, por lo que me gustaría usar una declaración preparada en lugar de la llamada a la consulta().PDO fueron filas afectadas durante la ejecución de la declaración
Mi código es el siguiente:
$dbh = buildDBConnector();
$sql = "UPDATE tb_users
SET authState=1
WHERE id = ? AND authPass = ?";
$q = $dbh->prepare($sql);
$f = $q->execute(array($id,$authPass));
if($f){
echo '<br />Success<br />';
}else{
echo '<br />Failure<br />';
}
La cuestión es que la consulta en sí está libre de errores y ejecuta bien, así que no hay falta de almacenamiento en $ f. Sin embargo, necesito saber si realmente encontró la fila para actualizar y luego la actualizó exitosamente. En otras palabras, necesito las filas afectadas. Cuando Google y tal, sigue llegando a la declaración del ejecutivo, pero desde mi entender, el ejecutivo no es para las declaraciones preparadas? ¿Alguna sugerencia?
Advertencia: si el valor * ya * está configurado (la actualización se ejecuta dos veces, tal vez desde un botón de envío doble clic), la segunda vez causaría un error aunque los datos estén correctos. Para la experiencia del usuario, podría ser más confiable hacer una declaración de selección luego para ver si el registro existe con el valor correcto 'select authState from tb_users where id =? y authPass =? '. Ningún resultado significa que la identificación o contraseña no existe. (ps Espero que hash las contraseñas! mira pbdkf2!) –