我认为这应该是一个简单的问题,但我看不到它。
$( document ).on( 'keydown', function ( e ) {
if (e.keyCode===13){
if($('textarea', this).val().length <= 5 && !event.shiftKey){
$('textarea').toggleClass("t_border");
setTimeout( function(){$('textarea').toggleClass("t_border");}, 400);
return false;
}
}
});
Echo系列给了我。
$SQL = "Select `id` from `fileStore` WHERE `uid` = ':UID' and `offset` = :OFFSET";
$InPut = array(':UID' => $LocArr[0],':OFFSET' => $LocArr[1]);
echo(str_replace(array_flip($InPut),$InPut,$SQL));
$stmt = $db->prepare($SQL);
$stmt->execute($InPut);
我可以针对数据库运行。但是我得到了错误。
Select `id` from `fileStore` WHERE `uid` = '20151009162211-909549588' and `offset` = 1
答案 0 :(得分:1)
在您的查询中,您引用了第一个占位符,这使其成为一个字符串。当执行被触发时,PDO
被混淆,因为你告诉它有两个占位符,但它只找到一个(未加引号的)。
要解决此问题
$SQL = "Select `id` from `fileStore` WHERE `uid` = :UID and `offset` = :OFFSET";
$InPut = array(':UID' => $LocArr[0],':OFFSET' => $LocArr[1]);
$stmt = $db->prepare($SQL);
$stmt->execute($InPut);
当它转到数据库时,这应该使:UID
= $LocArr[0]
和:OFFSET
= $LocArr[1]
。
看起来您还试图用查询中的实际值替换占位符,您不应该这样做。这消除了预备陈述的目的。
另一种写作方式是
$SQL = "Select `id` from `fileStore` WHERE `uid` = ? and `offset` = ?";
$stmt = $db->prepare($SQL);
$stmt->execute(array($LocArr[0], $LocArr[1]));