我遇到了PDO中绑定参数的问题。如果我想使用javascript中的两个输出参数,则会发生此问题。使用.AJAX将变量发送到PHP脚本(我测试过的JavaScript变量可以在我的PHP脚本中找到,它们的确的确如此)。
当我使用这个时,我不会收到错误消息变量但SQL不执行。当我用像'12344'这样的整数替换javascript变量时,它就可以工作。该读音字使用的代码是:
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";
}
}
如果我附和XCOORD我得到“212562.46720”和YCOORD“520411.55763”。
$ dans变量是我从$ _SESSION ['dans_code']获得的变量; 这个变量来自一个php脚本,它的工作原理是如果我只使用这个变量。
这是我的JavaScript的一部分,并且还发送了javascript值。这些值是地图中鼠标位置点击后的x和y坐标。这不是得到这个变量的最好方法,但它起作用。
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);
}
});
});
从哪里得到这个'$ dans'的价值? –
我编辑了我的问题 –
你没有检查任何地方的错误,我们不知道你的其他代码(JS/HTML)是什么样的。也看看你的控制台。 –