2013-04-27 3 views
-2

Я использую jQuery для отправки двух переменных. Затем я загружаю внешний php-файл, чтобы поместить эти 2 переменные в базу данных. По какой-то причине запрос не работает. Если я попробую это обычным способом. Оно работает.SQL-запрос не работает с jQuery AJAX

JQuery код

$.post("/include/getResult.php", { 
finalscore:score, finalcredits:credit }, 
function(data){ 

console.log("Data: " + data); 

}); 

PHP код

session_start(); 
$finalscore = $_POST['finalscore']; 
$finalcredits = $_POST['finalcredits']; 
$query = mysqli_query($con, "SELECT score,credits FROM gebruikers WHERE leerlingennummer = '".$_SESSION['leerlingennummer']."'"); 
if(mysqli_num_rows($query) == 1) 
{ 
    $row = mysqli_fetch_array($query); 
    //get the current score and credits 
    $score = $row['score']; 
    $credits = $row['credits']; 
    $score = 'succes'; 
} 
echo $score; 

По какой-то причине запрос не работает таким образом.

+2

SQL-запрос ** не может работать или не работать с jQuery AJAX. Они никогда не встречаются. Это * PHP *, который выполняет ваш запрос, а не AJAX –

+1

«SELECT score, credits FROM gebruikers WHERE leerlingennummer = '". $ _ SESSION [' leerlingennummer ']. "" SQL-инъекция привлекает – underscore

+1

@YourCommonSense Я вижу, что PHP запускает запрос. Но AJAX вызывает файл PHP. Если я загружаю php-код обычным способом, он работает. Но через jQuery он не работает –

ответ

0

PHP КОД

session_start(); 
$finalscore = $_POST['finalscore']; 
$finalcredits = $_POST['finalcredits']; 
$query = mysqli_query($con, "SELECT score,credits FROM gebruikers WHERE leerlingennummer = '".$_SESSION['leerlingennummer']."'"); 
if(mysqli_num_rows($query) == 1) 
{ 
    $row = mysqli_fetch_array($query); 
    //get the current score and credits 
    $score = $row['score']; 
    $credits = $row['credits']; 
    $score = 'succes'; 
} 
echo $score; 

AJAX

$("YourSubmitButtonId").click(function(event){ 

    event.preventDefault(); 

    var Formdata = $("YourFormId").serialize(); 

     $.ajax({ 

     type:"POST"; 
     url:"/include/getResult.php", 
     data:Formdata, 
     success:function(response){ 

     $("reponceId").html(response); 

     }; 




    }); 
}); 
+0

'SELECT score, credits FROM gebruikers WHERE leerlingennummer = '". $ _ SESSION [' leerlingennummer ']. "'" 'SQL injection _attracts_ – Ejaz

+0

Входы, взятые из формы или иным образом введенные пользователем, должны быть дезинфицированы перед использованием в запрос, является серьезной проблемой безопасности.Вы должны использовать подготовленные заявления – LuckyStarr

+0

он использовал свои коды. Мне нравится работать с PDO с подготовленным заявлением – underscore

0

кажется, работает хорошо. Но вам нужно добавить/изменить код.

  1. Для предотвратить SQL Injection

    $query = mysqli_query($con, "SELECT score,credits FROM gebruikers WHERE leerlingennummer = '".$_SESSION['leerlingennummer']."'"); 
    

    должен быть

    $query = mysqli_query($con, "SELECT score,credits FROM gebruikers WHERE leerlingennummer = '".addslashes($_SESSION['leerlingennummer'])."'"); 
    
    • $ _SESSION [ 'leerlingennummer'] может быть заглушены. Просмотрите свой код.
  2. Добавить обновление запрос

    if(mysqli_num_rows($query) == 1) 
    { 
        $row = mysqli_fetch_array($query); 
        //get the current score and credits 
        $score = $row['score']; 
        $credits = $row['credits']; 
        $score = 'succes'; 
        mysqli_query($con, "update gebruikers set `score` = '".addslashes($_POST['finalscore'])."', `credits` = '".addslashes($_POST['finalcredits'])."' where leerlingennummer = '".addslashes($_SESSION['leerlingennummer'])."'"); 
    } 
    

Этот код будет изменить счет в MySQL, чтобы 'finalscore', кредиты в MySQL на 'finalcredits'. Than, ajax alert будет «успешным». Если вы хотите быть оценкой до обновления, вы можете сделать следующее:

if(mysqli_num_rows($query) == 1) 
{ 
    $row = mysqli_fetch_array($query); 
    //get the current score and credits 
    $score = $row['score']; 
    $credits = $row['credits']; 
    mysqli_query($con, "update gebruikers set `score` = '".addslashes($_POST['finalscore'])."', `credits` = '".addslashes($_POST['finalcredits'])."' where leerlingennummer = '".addslashes($_SESSION['leerlingennummer'])."'"); 
}