SQL Вставить и Удалить запрос через AJAX - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь отправить вставку и удалить sql запросы, используя AJAX и PHP.Я проверил вкладку сети инструментов разработчика и вижу, что когда я нажимаю на вход, он успешно извлекает значения, поэтому основная проблема, которую я имею, - это вставка этих значений в БД и удаление значений из БД.

РЕДАКТИРОВАТЬ: не возвращаются сообщения об ошибках в отношении моего запроса SQL, поэтому я не уверен, что происходит.

Вот мой код HTML и JQUERY:

 $(document).ready(function() {
        $("#favbut").click(function() {
            var username = $("#usernamefav").val();
            var lid = $("#lidfav").val();
            var favourite = $("#favouritefav").val();

            $.ajax({
                url: "fave.php",
                type: "post",
                dataType: "json",
                data: {
                    username: username,
                    lid: lid,
                    favourite: favourite
                }
            });
        });
        $("#unfavbut").click(function() {
            var username = $("#usernameunfav").val();
            var lid = $("#lidunfav").val();
            var favourite = $("#favouriteunfav").val();

            $.ajax({
                url: "unfave.php",
                type: "post",
                dataType: "json",
                data: {
                    username: username,
                    lid: lid,
                    favourite: favourite
                }
            });
        });
    });
<input type="hidden" name="username" id="usernamefav" value='.$user.'>
<input type="hidden" name="lid" id="lidfav" value='.$lid.'>
<input type="hidden" name="favourite" id="favouritefav" value=YES>
<input class="favButt fav" id="favbut" type="submit" name="faveBTN" value="Fave">';
                
                
<input type="hidden" name="username" id="usernameunfav" value='.$user.'>
<input type="hidden" name="lid" id="lidunfav" value='.$lid.'>
<input type="hidden" name="favourite" id="favouriteunfav" value=YES>
<input class="favButt unfav" id="unfavbut" type="submit" name="unfaveBTN" value="unFave">';

Вот файлы php:

<?php
if(isset($_POST['favbut'])){
include 'includes/dbh.inc.php';

$username = $_POST['username'];
$lid = $_POST['lid'];
$favourite = $_POST['favourite'];

$sql = "INSERT INTO userslocation (fid,username,lid,favourite) VALUES ('','".$username."', '".$lid."','".$favourite."')";
$result = (mysqli_query($conn, $sql));          
}
?>

<?php

if(isset($_POST['unfavbut'])){
    include 'includes/dbh.inc.php';
$username = $_POST['username'];
$lid = $_POST['lid'];
$favourite = $_POST['favourite'];

$sql = "DELETE FROM userslocation WHERE username='$username' AND lid='$lid'";
$result = (mysqli_query($conn, $sql));          
}
?>

Любая помощь относительно того, что идет не так, приветствуется!

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

На самом деле ваши запросы выглядят хорошо.Но @RonCajan правильно сказал о возможной инъекции SQL.

1) Я думаю, что здесь есть ошибки:

if(isset($_POST['favbut'])) { ...
...
if(isset($_POST['unfavbut'])) { ...

Эти значения не передаются вашими запросами $ .ajax.Добавьте их к вашему запросу или вместо того, чтобы передавать их, вы можете проверить isset значения lid.

Простой способ проверить это - сделать echo 1; перед условием и echo 2; внутри блока операторов.И посмотрите ответ.

2) Как сказал @RonCajan, если ваш столбец fid имеет значение auto_increment, вы должны пропустить его в своем запросе, не устанавливайте его как ''.

Также вphp, если вы используете двойные кавычки, вам не нужно использовать конкатенацию для вставки значений переменных. документы

$query = "INSERT INTO userslocation (username, lid, favourite) VALUES ('${username}', '${lid}','${favourite}')";

И еще один совет.Узнайте, как использовать инструменты отладки как xdebug .Поиск ошибок в вашем коде становится намного проще.

0 голосов
/ 16 февраля 2019

Обновлено:

Прежде всего ваш код подвержен SQL-инъекциям.Используйте подготовленное заявление в целях безопасности.Обратитесь к этому сайту, чтобы улучшить ваш код.http://php.net/manual/en/book.mysqli.php

Думаю, вы ошиблись.

$sql = "INSERT INTO userslocation 
(fid,username,lid,favourite) VALUES ('','".$username."', 
'".$lid."','".$favourite."')"; 

Вместо этого используйте этот запрос:

$sql = "INSERT INTO userslocation 
(username,lid,favourite) VALUES 
('$username','$lid','$favourite')"; 

Если у вашего fid есть auto_increment по умолчанию, вам не нужно присоединять его к вашему запросу и не объединять его.Я думаю, что объединение для соединения двух строк или для печати текста.

В вашем HTML-коде.Попробуйте использовать <?php echo $variable; ?> во всех ваших входных значениях.Может быть, он не содержит никакого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...