2016-04-25 12 views
-1

ich mit Bindung paramters in PDO ein Problem m. Dieses Problem tritt auf, wenn ich zwei out-Parameter von einem Javascript verwenden möchte. Mit der Verwendung von .AJAX werden die Variablen an das PHP-Skript gesendet. (Ich testete die Javascript-Variablen sind in meinem PHP-Skript und sie waren in der Tat.)

Ich bekomme keine Fehlermeldung, wenn ich dies benutze Variablen, aber das SQL wird nicht ausgeführt. Wenn ich die Javascript-Variablen durch eine Ganzzahl wie '12344' ersetze, funktioniert es. Der Code, den ich mit m:

session_start(); 
$user = 'postgres'; 
$pass = 'baf45baf'; 
$dans = $_SESSION['dans_code']; 

if(isset($_POST['ycoord'], $_POST['xcoord'])) { 
$dbh = new PDO("pgsql:host=localhost;dbname=import", $user, $pass); 
$sql = 'UPDATE geom_tijd SET x_coord= :x_coord, y_coord= :y_coord WHERE dans_code = :code'; 
$stmt = $dbh->prepare($sql); 
$stmt->bindParam(':code', $dans); 
$stmt->bindValue(':y_coord', $_POST['ycoord'],PDO::PARAM_INT); 
$stmt->bindValue(':x_coord', $_POST['xcoord'],PDO::PARAM_INT); 
$stmt->execute(); 

if (!$stmt) { 
    echo "\nPDO::errorInfo():\n"; 
    print_r($dbh->errorInfo()); 
} 

if($stmt->rowCount() == 0){ 
    echo "failure"; 
} else { 
    echo "victory"; 

} 
} 

Wenn ich die xcoord Echo I '212562,46720' und die yKoord '520411,55763' bekommen.

Die $ dans Variable ist eine Variable, die ich von $ _SESSION bekommen [ 'dans_code']; Diese Variable ist von einem PHP-Skript früher und es funktioniert, wenn ich nur diese Variable verwende.

Dies ist der Teil meiner Javascript, dass der JavaScript-Wert zu erhalten und auch senden. Die Werte sind die x- und y-Koordinaten aus der Mausposition beim Anklicken in der Karte. Dies ist nicht der beste Weg, um diese Variablen zu erhalten, aber es funktioniert.

map.on('click', function() { 
var show = document.getElementById("location").innerHTML; 
var show_schoonmaken = show.replace('<div class="custom-mouse-position">',""); 
var show_klaar = show_schoonmaken.replace('</div>',""); 
var show_done = show_klaar.replace(' ',""); 
var split = show_done.split(','); 

document.getElementById("y_coördinaat").value = split[1]; 
document.getElementById("x_coördinaat").value = split[0]; 

    $.ajax({ 
     url: 'update_coordinates.php', //This is the current doc 
     type: "POST", 
     data: ({xcoord: split[0],ycoord: split[1]}), 
     success: function(data){ 
      console.log(data); 
      alert(data); 
     } 
    }); 
}); 
+0

Woher bekommen Sie diesen '$ dans' Wert? –

+0

Ich habe meine Frage –

+0

bearbeitet. Sie suchen nirgendwo nach Fehlern und wir wissen nicht, wie der Rest Ihres Codes (JS/HTML) aussieht. Schau auch deine Konsole an. –

Antwort

0

Aus der Dokumentation scheint, wie Sie einen Datentyp in den Bindungsaufruf hinzufügen müssen? z.B. stackoverflow.com/questions/2718628/pdoparam-for-type-decimal empfiehlt die Verwendung von PDO :: PARAM_STR für ein Float. Auch was Echo $ _POST ['ycoord'], $ _POST ['xcoord'] Ihnen gibt.

Der obige Link schlägt vor, dass Sie PDO verwenden sollten: PARAM_STR wo haben Sie das Echo hinzugefügt, sollte es so nah wie möglich an der Spitze sein, vielleicht kurz vor oder direkt nach der isset-Anweisung. Es wäre hilfreich, wenn Sie die Ausgabe dieser Echo-Anweisung veröffentlichen könnten, wenn Sie weiterhin Probleme haben.