-1
Good afternoon.
I am creating a form where the user selects some fields to formulate a query and thus generate an sql to be executed and returned.
After validating the fields, I create a $array_whare array and insert all the selected fields into the form, as an example:
client.id_client='7' and tecnico.id_tecnico = '11' and chamado.data_encerramento between '2019-01-01 00:00:00' and '2019-01-31 23:59:00'' (length=139)
So, I send to the function that inserts into a $sql variable via bindValue the $array_where variable:
$sql = 'select
chamado.num_chamado,
cliente.nome_fantasia,
equipamento.num_serie ,
tecnico.nome_tecnico,
tipo_servico.tipo_servico ,
chamado.cont_inicial,
chamado.cont_final ,
chamado.data_abertura ,
chamado.data_encerramento ,
chamado.solicitante ,
chamado.servico_solicitado ,
status_chamado.tipo_status,
atividade_chamado.data_inicio ,
atividade_chamado.data_final_atend ,
atividade_chamado.relatorio_tecnico
from
chamado
inner join equipamento on equipamento.id_equipamento = chamado.equipamento_id_equipamento
inner join tipo_servico on tipo_servico.id_tipo_servico = chamado.tipo_servico_id_tipo_servico
inner join atividade_chamado on atividade_chamado.chamado_id_chamado = chamado.id_chamado
inner join tecnico_has_atividade_chamado on tecnico_has_atividade_chamado.atividade_chamado_id_atividade = atividade_chamado.id_atividade
inner join tecnico on tecnico.id_tecnico = tecnico_has_atividade_chamado.tecnico_id_tecnico
inner join contrato on contrato.id_contrato = equipamento.contrato_id_contrato
inner join cliente on cliente.id_cliente = contrato.cliente_id_cliente
inner join status_chamado on status_chamado.id_status_chamado = chamado.status_chamado_id_status_chamado
inner join usuario on usuario.id_usuario = chamado.usuario_id_usuario
where
:Array_where;';
$stmt = Conexaodb::getInstance()->prepare($sql);
$stmt->bindValue(':Array_where', $array_where, PDO::PARAM_LOB);
$stmt->execute();
After running $stmt select returns no result and also no error. To verify, I created the whole SQL before sending to the function, concatenating in an array the beginning of SQL, up to Where, and later the Where clauses that the user chose and sent to the function run. in function changed from prepare($sql) to query($sql) and the seleect returned the result normally.
In short, I wanted to know if there is a PDO lock that does not accept I replace value with something in the SQL standard, like table.column= value? I tested with baindParam, Bindvalue, changed the PARAM_STR, PARAM_STR_CHAR and etc and still can’t use.
Could you help me?
That way it’s not possible, you’d have to do one by one.
– rray