2016-03-26 10 views
0

Gönder düğmesine tıkladıktan sonra veritabanımda bir kullanıcı kimliği ile yeni bir satır oluşturuluyor ancak kullanıcı adı veritabanına gönderilmiyor. Şu anda benim loginInfo tablo gönderiyorum iki tane 3 sütun var: userID (otomatik oluşturulan ve artırılmış), kullanıcı adı ve şifre. Hatamın newuser.php dosyasında olduğuna inanıyorum, içinde ne yapacağımdan emin değilim. komutYeni bir kayıt ekleme: Satır veritabanı içinde oluşturuluyor ancak değerler gönderilmiyor

$.fn.editable.defaults.mode = 'inline'; 

//init editables 
$('.myeditable').editable({ 
    url: 'post.php' //this url will not be used for creating new user, it is only for update 
}); 

//make username required 
$('#new_username').editable('option', 'validate', function(v) { 
    if(!v) return 'Required field name!'; 
}); 

//automatically show next editable 
$('.myeditable').on('save.newuser', function(){ 
    var that = this; 
    setTimeout(function() { 
     $(that).closest('tr').next().find('.myeditable').editable('show'); 
    }, 200); 
}); 

$('#save-btn').click(function() { 
    $('.myeditable').editable('submit', { 
     url: 'newuser.php', 
     ajaxOptions: { 
      type: 'POST', 
      dataType: 'json' //assuming json response 
     }, 
     success: function(data, config) { 
      if(data && data.id) { //record created, response like {"id": 2} 
       //set pk 
       $(this).editable('option', 'pk', data.id); 
       //remove unsaved class 
       $(this).removeClass('editable-unsaved'); 
       //show messages 
       var msg = 'New user created! Now editables submit individually.'; 
       $('#msg').addClass('alert-success').removeClass('alert-error').html(msg).show(); 
       $('#save-btn').hide(); 
       $(this).off('save.newuser'); 
      } else if(data && data.errors){ 
       //server-side validation error, response like {"errors": {"username": "username already exist"} } 
       config.error.call(this, data.errors); 
      } 
     }, 
     error: function(errors) { 
      var msg = ''; 
      if(errors && errors.responseText) { //ajax error, errors = xhr object 
       msg = errors.responseText; 
      } else { //validation error (client-side or server-side) 
       $.each(errors, function(k, v) { msg += k+": "+v+"<br>"; }); 
      } 
      $('#msg').removeClass('alert-success').addClass('alert-error').html(msg).show(); 
     } 
    }); 
}); 

altında aynı dosyada Post.php da

<td><a href="#" class="myeditable editable editable-click editable-empty" id="new_username" data-type="text" data-name="name" data-original-title="Enter username">Empty</a></td> 

include('connect.php'); 
sleep(1); 
$pk = $_post['pk']; 
$un=$_POST['name']; 
$value1 = $_POST['value']; 

if(!empty($value1)) { 
    $sql =("UPDATE loginInfo 
      SET $un=$value1 
      WHERE userID='$pk'"); 
    mysqli_query($con, $sql); 

    //here, for debug reason we just return dump of $_POST, you will see result in browser console 
    print_r($_POST); 
} 
else { 
    header('HTTP/1.0 400 Bad Request', true, 400); 
    echo "This field is required!"; 
} 

newuser.php

görüyorum net konsolun altında benim firefox yılında
$pk = $_post['pk']; 
$un=$_POST['name']; 
$value1 = $_POST['value']; 

try { 

    $sql =("INSERT INTO loginInfo(username,password) 
      VALUES ('a','b')"); 
    mysqli_query($con, $sql); 


} catch (Exception $e) { 
    print($e->__toString()); 
} 

?> 

Bu çıktı, giriş yaptığım değer

Parameters 
name  
testing 

Source 
name=testing 

dokümanlar web sitesinden adı metin kutusuna d: Bir dize beri https://vitalets.github.io/x-editable/docs.html#newrecord

cevap

0

Sen, kullanıcı adı tırnak içine alın gerekir.

$sql =("UPDATE loginInfo 
     SET $un='$value1' 
     WHERE userID='$pk'"); 

SQL enjeksiyonu önlemek için hazırlanmış bir sorgu kullandıysanız daha iyi olurdu. sütun adı parametrize edilemez yana

$stmt = mysqli_prepare($con, 
         "UPDATE loginInfo 
         SET $un = ? 
         WHERE userID = ?"); 
mysqli_bind_param($stmt, "ss", $value1, $pk); 
mysqli_execute($stmt); 

, sorguda kullanmadan önce $un doğrulamak gerekir. Ya da POST parametresini kullanmak yerine sütun adını sadece kodlayabilirsiniz, eğer kullanıcı güncelleyebileceği tek sütunsa.

+0

Kodumu değiştirdim, ancak hala çalışmıyor. Post.php ve newuser.php sayfalarının doğru şekilde kurulduğunu sanmıyorum. Kullanıcı birçok sütunu güncelleyebildiğinden sütun adını kodlayamıyorum – noname

+0

Sorgu hata veriyor mu? Echo mysqli_error ($ con); 'ne gösteriyor? – Barmar

+0

Sadece 'mysqli_prepare' için $ con' argümanını dışarıda bıraktığımı fark ettim, düzeltilmiş sözdizimini deneyin. – Barmar

İlgili konular