Bom dia, estou tentando fazer um update em uma tabela com o seguinte script:
/*** Update a record on another table*/
// SQL statement parameters
$update_table = ‘gabarito’ // Table name
$update_where = “matricula = ‘$matricula’ AND tipo_prova = ‘$fase’”; // Where clause
$update_fields = array( // Field list, add as many as needed
“questao_’.$i.’ = ‘$gabarito’”,
);
// Update record
$update_sql = ‘UPDATE ’ . $update_table
. ’ SET ’ . implode(’, ', $update_fields)
. ’ WHERE ’ . $update_where;
sc_exec_sql($update_sql);
mas está dando erro na condição $update_where, testei com uma condição apenas e funcionou, mas com duas não vai, alguém consegue ver o meu erro ?
seria bom relatar o erro, mas uma boa forma de saber seria recuperar o que tem de resultado e colocar em um gerenciador de banco de dados
faça algo como:
$update_sql = ‘UPDATE ’ . $update_table
. ’ SET ’ . implode(’, ', $update_fields)
. ’ WHERE ’ . $update_where;
echo $update_sql;
exit;
sc_exec_sql($update_sql)
assim o script vai interromper e mostrar o conteúdo que esta sendo passado
o $i é alterado quando?
Sim, de acordo com o número da questão
tem um ponto (concatenação) depois do $i ,creio que é isso.
o erro está ocorrendo nesta linha ralphrangel
$update_where = “matricula = ‘$matricula’ AND tipo_prova = ‘$fase’”;
Essa parte aqui não deveria ser assim?
“questao_”.$i." = ‘".$gabarito."’"
Mas ali onde eu fiz a citação está errado tbm
Jair, quando executo o mesmo script com apenas uma condição, $matricula, funciona blz, mas com cas duas nada, e preciso da segunda condição também
se vc tem a questão variando pergunto: a questão não deveria fazer parte do WHERE?
É erro de código ou de lógica que está acontecendo?
de acordo com os exemplos do scriptcase:
/**
- Update a record on another table
*/
// SQL statement parameters
$update_table = ‘my_table’; // Table name
$update_where = “field_3 = ‘condition’”; // Where clause
$update_fields = array( // Field list, add as many as needed
“field_1 = ‘new_value_field_1’”,
“field_2 = ‘new_value_field_2’”,
);
// Update record
$update_sql = ‘UPDATE ’ . $update_table
. ’ SET ’ . implode(’, ', $update_fields)
. ’ WHERE ’ . $update_where;
está correto, e no debub essa linha passou
sc_exec_sql($update_sql);
pelo que vi vc tem que colocar a questão também no where
essa rotina é para montar o gabarito, então na condição vai a matricula e a prova e o script escreve na tabela referente a questão a resposta certa, pos na tabela eu tenho os seguintes campos
matricula
tipo_prova
questao_1 … até questao_40
então… no seu WHERE vc nao testa a questão, tem que colocar
Mas é para rotina preencher a questao_$i quando a matricula e prova satisfazerem a condição
o resultado do update é que é gravado somente a ultima questão?
deixei o where com apenas a condição matricula, ele preencheu corretamente a tabela, mas quando o aluno fizer uma outra prova, onde ele inseria os dados ?
Deixa o seu update completo e dá um echo nele pra vc ver como está vindo esse update.
Faz assim:
echo $update_sql;
não, está em um while em que ele procura no banco de questões referente a disciplina preenchedo a prova com 40 questões,
fiz o que disse, mas o erro está na sintaxe do $update_where