Seu problema inicial é que você não estava verificando todos chamar para o fracasso, apenas alguns no início. Ambos
store_result
e bind_result
também pode falhar. Seu problema específico (depois de corrigir o inicial) é que você está fazendo
select *
para obter vários colunas, mas você está vinculando apenas uma no resultado. Isso fica evidente na mensagem de erro que você recebe do bind_result
ligar:Se você alterar o
select
declaração para algo como select id from ...
, você verá que ele começa a funcionar. No entanto, supondo que você quere mais colunas, você deve fornecer mais variáveis na ligação, algo como:
$stmt = $db->prepare("SELECT col1, col2 FROM messages WHERE post_id = ?");
:
$ex = $stmt->bind_result($param1, $param2);
Você notará que não estou usando
select *
lá em cima, é melhor usar a nomenclatura de coluna explícita em quase todas as situações para que:- você não fica surpreso quando o esquema do banco de dados muda;
- você obtém apenas os dados de que precisa;
- você pode mapear colunas para variáveis de resultado corretamente.
Praticamente o único lugar que eu já encontrei, não há problema em usar
select *
está em ferramentas de análise de banco de dados onde você deseja obter tudo. Se você sabe o que quer com antecedência, é isso que você deve pedir.