2017-03-31 4 views
0

Grundsätzlich sende ich einige Daten über eine Ajax-Anfrage an ein PHP-Skript, die eine Abfrage ausführen sollte, um eine Tabelle in der Datenbank zu aktualisieren.PHP-Abfrage gibt 'Konvertierung fehlgeschlagen beim Konvertieren der Varchar-Wert'

jedoch seine worden, den Text und Mitteilungs id nehmen will ich kein Problem: enter image description here damit ich weiß, ist es das Senden von Daten ich will, aber die Tabelle gerade nicht Aktualisierung (es funktioniert nicht, die Worte haben „Zusatztext“ aus dem Daten i geschickt, um dort)

Jetzt in Firefox Entwickler Fenster unter der Registerkarte Netzwerk und unter Vorschau i haben: enter image description here , die werfen ein sQL-Fehler zu sein scheint?

Dies ist der PHP-Skript aus der Anforderung auszuführen:

<?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"; 

} 


?> 

und das ist die Anforderung selbst:

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; 
}; 

also denke ich den Grund seine nicht die Tabelle, die Fehler aktualisiert, so Meine Frage ist, wie schreibe ich die Abfrage sicher in PHP ohne diesen Fehler zu bekommen?

+0

Dies ist ein SQL-Problem. Der Wert, den Sie senden, kann von SQL nicht in 'VARCHAR' konvertiert werden. Entweder weil der Wert die Grenzen der Feldgröße überschreitet oder ungültige Zeichen enthält –

+0

Hmm hat versucht, das Update in SQL selbst auszuführen und keine Fehler, es ist ein VARCHAR (MAX), also kein Risiko von Zeichenbegrenzung – user7409253

+0

zeigen Sie Ihre Spalte Design – Gert

Antwort

0

Ich glaube, Sie haben die einfachen Anführungszeichen in Note Spalte vergessen. Versuchen Sie dies:

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

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

aber würde dies nicht den Zweck besiegen, den Parameter zu definieren, um ihn sicherer vor Injektionen zu machen? Ich werde es jetzt trotzdem schnell versuchen – user7409253

Verwandte Themen