Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php pdo未正确绑定参数_Php_Mysql_Pdo - Fatal编程技术网

Php pdo未正确绑定参数

Php pdo未正确绑定参数,php,mysql,pdo,Php,Mysql,Pdo,我已经被困在这个问题上三天了,问了很多人关于这个问题,似乎没有人能回答我为什么这个问题不起作用。我无法理解为什么它们不绑定,因为绑定在select语句上工作,而在更新上不工作。我知道,$sessCheck['userid']和$sessCheck['hwid']]正在设置,因为我已经将它们打印出来,以检查它们是否为空 来自slim的入站请求 {"userid": "1000","hwid":"TESTING"} 功能 function updateHWID(){ $reques

我已经被困在这个问题上三天了,问了很多人关于这个问题,似乎没有人能回答我为什么这个问题不起作用。我无法理解为什么它们不绑定,因为绑定在select语句上工作,而在更新上不工作。我知道,
$sessCheck['userid']
$sessCheck['hwid']]
正在设置,因为我已经将它们打印出来,以检查它们是否为空

来自slim的入站请求

{"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日志中传入的结果

      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);
然后我也试过了,但没用

$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);

将绑定的参数名称从其单引号中去掉

所以:

$sql2=“更新帐户集hwID=:hwID,其中userID=:userID;”

将绑定的参数名称从其单引号中去掉

所以:

$sql2=“更新帐户集hwID=:hwID,其中userID=:userID;”

删除引号表单占位符
hwID=:hwID其中userID=:userID
删除引号表单占位符
hwID=:hwID其中userID=:userID
Wow。。。。。引用。。。。。一直以来。谢谢大家!@如果你觉得这个答案对你有帮助。您可以通过单击此答案旁边的复选标记来接受答案。哇。。。。。引用。。。。。一直以来。谢谢大家!@如果你觉得这个答案对你有帮助。您可以通过单击此答案旁边的复选标记来接受答案。