使用ajax/php的mysql

9bfwbjaz  于 2021-06-18  发布在  Mysql
关注(0)|答案(4)|浏览(344)

在网上进行了多次尝试和研究之后,我找不到任何解决方法来解释为什么我在数据库插入查询中出错。有问题的错误是:
数据:查询出错:插入信号(严重性)值('gravitaalta')。
我拼命问问题出在哪里。无论它是在数据库本身中,还是在php或myajax中
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;
}
?>
nnt7mjpx

nnt7mjpx1#

改变,

$query = "INSERT INTO Segnalazione(Gravità) VALUES('.$gravita.')";

对此,

$query = "INSERT INTO Segnalazione(`Gravità`) VALUES('{$gravita} ')";

你似乎试图做一个字符串连接,它有一个问题/打字错误也尝试引用列名

pxy2qtax

pxy2qtax2#

尝试更改。。。

$query = "INSERT INTO Segnalazione(Gravità) VALUES('.$gravita.')";

对这个。。。

$query = "INSERT INTO Segnalazione(Gravità) VALUES('" . $gravita . "')";

另外,确保数据库中有一个“segnalazione”表,并且在该表中有一个名为“gravit”的列à' 它被设置为除您提供的字符串之外的其他字符串。

j0pj023g

j0pj023g3#

用这个 $query = "INSERT INTO Segnalazione(Gravità) VALUES('$gravita')"; 代替 $query = "INSERT INTO Segnalazione(Gravità) VALUES('.$gravita.')";

ne5o7dgx

ne5o7dgx4#

$query = "INSERT INTO Segnalazione(Gravità) VALUES('$gravita')";

这对你有用。你试图连接字符串,但没有工作,因为它应该!!!您应该使用嵌套在单引号中的双引号,或者更简单地使用上述方法。
不过,此解决方案将使您能够接受sql注入,因此我建议您使用准备好的语句:

$stmt = $conn->prepare("INSERT INTO Segnalazione(Gravità) VALUES (?)");
$stmt->bind_param("s", $gravita);
$stmt->execute();

相关问题