after calculating the grade of a quiz in a js file i’m trying to take that variable to update the grade, of that particular student in a php file.
the script is executed in the user area where the user id is set.
errors: The indicated user is not updated, probably the variable doesn’t arrive or php is not set up properly;
to transport the grade variable from js to the php file i used this code which is executed at the end of the quiz
quiz.js
var vote = userScore * 10;
window.open('/php/vote.php?vote='+vote);
private-area.php
<?php
require 'php/config.php';
$_SESSION["id_utente"];
$sessionId = $_SESSION["id_utente"];
$user = mysqli_fetch_assoc(mysqli_query($connessione, "SELECT * FROM utenti WHERE id_utente = $sessionId"));
?>
vote.php (first time i update)
<?php
require_once('config.php');
$var_voto = $_GET['vote'];
if($connessione->connect_error){
echo "Registrazione avvenuta con successo";
$query = $connessione->prepare("UPDATE utenti SET voto = $var_voto WHERE id = $user ");
$query->bind_param('voto', $id);
$result = $query->execute();
}else{
echo "Error";
}
?>
2
Answers
Your mysql appears incorrect. You shouldn’t be using variables inside SQL queries, certainly not with prepared statements to avoid any SQL injection.
Try
This is assuming that
voto
andid
in your database are integer types. If they are strings/varchar replaceii
withss
inbind_param
.By way of an explanation, use
?
to specify parameterised data inside your prepared query and bind them with the data usingbind_param
. The first argument is the data type, we’re usingi
for integers in the above code, and two of them (i.e.ii
) because we’re binding two parameters ($var_voto
and$user
) See https://www.php.net/manual/en/mysqli-stmt.bind-param.php for more.The second, third, forth, fifth etc argument are the variables containing the data we wish to insert (or bind) to the query.
You can use bindParam like below
$query = $connessione->prepare("UPDATE utenti SET voto = :var_voto WHERE id = :user ");
$query->bindParam(‘:var_voto’,$var_voto);
$query->bindParam(‘:user’, $user );