2017-03-31 52 views
0

基本上我通過Ajax請求發送一些數據到一個php腳本,它應該運行一個查詢來更新數據庫中的一個表。PHP查詢返回'轉換varchar值時轉換失敗'

但是它一直走的是文字和音符ID我想沒問題: enter image description here 所以我知道它的發送我想要的數據,但該表只是心不是更新(它沒有從數據的話「附加文本」我派有)

現在在Firefox的開發窗口,網絡標籤下,並在預覽我有: enter image description here 這似乎是扔SQL錯誤?

這是PHP腳本從請求運行:

<?php include 'connectionDetails.php'; ?> 

<?php 


if (isset($_POST['noteid1'], $_POST['notetext1'])) 
{ 

    $noteid2 = $_POST['noteid1']; 
    $notetext2 = $_POST['notetext1']; 

    $stmt = "UPDATE Notes SET Note = ? WHERE NoteID = ?"; 
    $params = array($noteid2, $notetext2); 

    $stmt = sqlsrv_query($conn, $stmt, $params); 

    if ($stmt === false) 
    { 
     die(print_r(sqlsrv_errors(), true)); 
    } 
} 
else 
{ 
    echo "No Data"; 

} 


?> 

,這是請求本身:

function submitNoteText() 
{ 
    var noteid = <?php if(isset($_POST['noteid'])){ echo $_POST['noteid'];} ?>; 
    var notetext = $("#ta1").val(); 

    if(noteid == ''||notetext == '') 
    { 
     alert("NoteID or Text is blank"); 
    } 
    else 
    { 
     $.ajax({ 
      type: "POST", 
      url: "submitNoteText.php", 
      dataType: 'json', 
      data: {noteid1: noteid, notetext1: notetext}, 
      cache: false, 
      success: function(result){ 
       alert("Success"); 
      } 
     }); 
    } 
    return false; 
}; 

所以我猜這個原因它不更新該表的錯誤,所以我的問題是我如何安全地在php中編寫查詢而不會出現該錯誤?

+0

這是一個SQL問題。您發送的值無法通過SQL轉換爲「VARCHAR」。因爲值超出了字段大小的邊界,或者包含無效字符 –

+0

嗯試過在SQL本身運行更新並且沒有錯誤,它的一個VARCHAR(MAX)所以沒有字符限制的風險 – user7409253

+0

顯示你的列設計 – Gert

回答

0

我想你已經忘記了Note欄中的單引號。試試這個:

$noteid2 = $_POST['noteid1']; 
$notetext2 = $_POST['notetext1']; 

$stmt = "UPDATE Notes SET Note = '$notetext2' WHERE NoteID = ?"; 
+0

但是這不會破壞定義參數的目的,從而使注射更安全。無論如何,我現在快速嘗試 – user7409253

相關問題