pdo没有正确绑定param

时间:2016-03-21 13:10:58

标签: php mysql pdo

我已经被困在这个问题上大约3天了,并问了很多人这个问题,似乎没有人能回答我为什么这样做不起作用。我无法弄清楚为什么它们没有绑定,因为绑定工作在select语句而不是更新。我知道$sessCheck['userid']$sessCheck['hwid']正在设置的事实,因为我已将它们打印出来以检查它们是否为null或其他内容。

来自苗条的入站请求

{"userid": "1000","hwid":"TESTING"}

功能

function updateHWID(){
        $request = Slim::getInstance()->request();
        //$bsreq = utf8_encode();
        $sessCheck = json_decode($request->getBody(), true, 9 );

        $db = getConnection();
        $sql = "SELECT userid,hwID FROM accounts WHERE userid = :userid";
        $stuff = $db->prepare($sql);
        $stuff->bindParam("userid", $sessCheck['userid']);
        $stuff->execute();
        $db = null;

        $rows = $stuff->fetch(PDO::FETCH_ASSOC);


        if ($rows['hwID'] != $sessCheck['hwid']) {
                $sql2 = "UPDATE accounts SET hwID=':hwid' WHERE userID = ':userid';";

                try {
                        $db2 = getConnection();
                        $stmt = $db2->prepare($sql2);
                        //these two param's are not binding
                        $stmt->bindParam("userid", $sessCheck['userid']);
                        $stmt->bindParam("hwid", $sessCheck['hwid']);         
                        $stmt->execute();
                        //$rt = $stmt->fetch(PDO::FETCH_ASSOC);
                        //$stmt->debugDumpParams();
                } catch(PDOException $e) {
                        echo '{"error":{"text":'. $e->getMessage() .'}}';
                }       
        }

}

这是sql log上传入的结果

      1372 Query     UPDATE accounts SET hwID=':hwid' WHERE userID = ':userid'

我也试过这个以及使用哪个也没有工作

$stmt->bindParam(":userid", $sessCheck['userid']);
$stmt->bindParam(":hwid", $sessCheck['hwid']);   

然后我也尝试了这个并且它没有工作

$stmt = $db2->prepare("UPDATE accounts SET hwID='?' WHERE userID = '?';");
$stmt->bindParam(1, $sessCheck['hwid'], PDO::PARAM_STR);        
$stmt->bindParam(2, $sessCheck['userid'], PDO::PARAM_INT);

1 个答案:

答案 0 :(得分:2)

从单引号中取出绑定参数名称。

所以:
$sql2 = "UPDATE accounts SET hwID=:hwid WHERE userID = :userid;";