Tu problema inicial es que no estabas revisando todos llamar al fracaso, sólo unos pocos al principio. Ambos store_result
y bind_result
también puede fallar.
Su problema específico (una vez que haya solucionado el inicial) es que está haciendo select *
para obtener múltiples columnas pero solo estás vinculando una en el resultado. Eso es evidente por el mensaje de error que recibe del bind_result
llamar:
Si cambia el select
declaración a algo como select id from ...
, encontrará que comienza a funcionar.
Sin embargo, suponiendo que quiera más columnas, debe proporcionar más variables en el enlace, algo como:
$stmt = $db->prepare("SELECT col1, col2 FROM messages WHERE post_id = ?");
:
$ex = $stmt->bind_result($param1, $param2);
Notarás que no estoy usando select *
arriba, es mejor usar nombres de columna explícitos en casi todas las situaciones para que:
- no se sorprende cuando cambia el esquema de la base de datos;
- solo obtienes los datos que necesitas;
- puede asignar columnas a variables de resultado correctamente.
Prácticamente el único lugar en el que he encontrado que está bien usar select *
está en las herramientas de análisis de base de datos donde desea obtener todo. Si sabe lo que quiere de antemano, eso es lo que debe pedir.