Reputation: 33
After many attempts and researches online I could not find any solution to why I have an error in the database insertion query. The error in question is:
data: Error in query: INSERT INTO Signaling (Severity) VALUES ('gravitaAlta').
I ask desperately where the problem is. Whether it can be in the database itself or in PHP or in my Ajax
HTML
<form method="post" id="formHomepage">
<div>
<input type="email" name="email" required="" placeholder="Email" maxlength="30" autocomplete="on">
</div>
<div >
<a href="#" id="fotocamera-button" >
<label for="fileInput">Carica/Scatta Foto</label>
</a>
<input type="file" accept="image/*" name="file" required="" id="fileInput">
<img class="img-thumbnail d-none" src="#" id="foto-screen">
</div>
<div>
<select name="categoria" required="">
<optgroup label="Seleziona il problema">
<option value="mantoStradale" selected="" >Manto Stradale</option>
<option value="idrico">Idrico</option>
<option value="luceGas">Luce e Gas</option>
<option value="rfifiuti">Rifiuti</option>
<option value="telecomunicazioni">Telecomunicazioni</option>
</optgroup>
</select>
</div>
<div class="form-group">
<select class="form-control" name="gravita">
<optgroup label="Seleziona la tua gravità">
<option value="gravitaAlta" selected="">Gravità Alta</option>
<option value="gravitaMedia">Gravità Media</option>
<option value="gravitaBassa" >Gravità Bassa</option>
</optgroup>
</select>
</div>
<div class="form-group">
<textarea class="form-control" rows="5" name="descrizione" placeholder="Descrizione" maxlength="120"></textarea>
</div>
<div class="d-flex flex-row">
<button type="submit" >Invia Segnalazione</button>
<button type="reset">Reset</button>
</div>
</form>
AJAX
var gravita = $("#formHomepage select[name='gravita'] :selected").val();
var item = '&gravita=' + gravita;
$.ajax(
{
type: 'POST',
url: 'https://civicsensethecitizen.altervista.org/php/formCopy.php',
data: item,
success: function(data)
{
console.log("data: " + data);
},
error: function()
{
alert("Connessione non riuscita");
}
});
PHP
<?php
mysqli_set_charset('utf8');
if(isset($_POST['gravita']))
{
$gravita = mysqli_real_escape_string($_POST['gravita']);
$connessione = mysqli_connect('localhost','civicsensethecitizen','') or die (mysqli_errno ($connessione). mysqli_error ($connessione));
$db = mysqli_select_db($connessione, "my_civicsensethecitizen" ) or die ('Database non trovato!');
$query = "INSERT INTO Segnalazione(Gravità) VALUES('.$gravita.')";
$risultato = mysqli_query($connessione,$query) or die ("Error in query: $query. " . mysqli_connect_error());
mysqli_close($connessione);
echo $gravita;
}
?>
Upvotes: 0
Views: 64
Reputation: 846
Try changing...
$query = "INSERT INTO Segnalazione(Gravità) VALUES('.$gravita.')";
to this...
$query = "INSERT INTO Segnalazione(Gravità) VALUES('" . $gravita . "')";
Also, make sure that there is a 'Segnalazione' table in your database, and in that table, there is a column named 'Gravità' and that it is set up to except the string you are providing.
Upvotes: 2
Reputation: 350
Change,
$query = "INSERT INTO Segnalazione(Gravità) VALUES('.$gravita.')";
To this,
$query = "INSERT INTO Segnalazione(`Gravità`) VALUES('{$gravita} ')";
You seemed to trying to do a string concatenation and it has a issue/ typo Also try quoting column name
Upvotes: -1
Reputation: 8338
$query = "INSERT INTO Segnalazione(Gravità) VALUES('$gravita')";
This will work for you. You tried to concatenate the string but did not work as it should!!! You should use double quotes nested inside the single quotes or simplier use the above way.
This solution though will have you open to SQL Injection so i would suggest to use prepared statements:
$stmt = $conn->prepare("INSERT INTO Segnalazione(Gravità) VALUES (?)");
$stmt->bind_param("s", $gravita);
$stmt->execute();
Upvotes: 1
Reputation: 108
Use this
$query = "INSERT INTO Segnalazione(Gravità) VALUES('$gravita')";
In Place of
$query = "INSERT INTO Segnalazione(Gravità) VALUES('.$gravita.')";
Upvotes: 1