以下脚本向我抛出此错误:

SQLSTATE [HY093]:参数号无效:参数未定义

错误来自以下几行:

$query .= "WHERE username1=:un1";
$binValues["un1"] = $_POST['username1'];

php语法有问题吗?

我的完整剧本:

<?php

    require_once "config.inc.php";  

    $query = "UPDATE customer SET ";
    $binValues = [];


    if(!empty($_POST['eidosmetaf1'])) {
        $query .= "eidosmetaf1 = :e1";
        $binValues["e1"] = $_POST['eidosmetaf1'];
    }

    if(!empty($_POST['weight1'])) {  
        $query .= ",weight1 = :w1";
        $binValues["w1"] = $_POST['weight1'];
    }

    if(!empty($_POST['startNomos1'])){ 
        $query .= ",startNomos1 = :sn1";
        $binValues["sn1"] = $_POST['startNomos1'];
    }

    if(!empty($_POST['startPoli1'])) { 
        $query .= ",startPoli1 = :sc1";
        $binValues["sc1"] = $_POST['startPoli1'];
    }

    if(!empty($_POST['start_lat'])) { 
        $query .= ",start_lat = :slat1";
        $binValues["slat1"] = $_POST['start_lat'];
    }

    if(!empty($_POST['start_lng'])) { 
        $query .= ",start_lng = :slng1";
        $binValues["slng1"] = $_POST['start_lng'];
    }

    if(!empty($_POST['finalNomos1'])) { 
        $query .= ",finalNomos1 = :fn1";
        $binValues["fn1"] = $_POST['finalNomos1'];
    }

    if(!empty($_POST['finalPoli1'])) {  
        $query .= ",finalPoli1 = :fc1";
        $binValues["fc1"] = $_POST['finalPoli1'];
    }

    if(!empty($_POST['final_lat'])) {  
        $query .= ",final_lat = :flat1";
        $binValues["flat1"] = $_POST['final_lat'];
    }

    if(!empty($_POST['final_lng'])) {  
        $query .= ",final_lng = :flng1";
        $binValues["flng1"] = $_POST['final_lng'];
    }

    if(!empty($_POST['depDate1'])) {  
        $query .= ",depDate1 = :dD1";
        $binValues["dD1"] = $_POST['depDate1'];
    }

    if(!empty($_POST['depTime1'])) { 
        $query .= ",depTime1 = :dT1";
        $binValues["dT1"] = $_POST['depTime1'];
    }

    if(!empty($_POST['specialservices1'])) {  
        $query .= ",specialservices1 = :ex1";
        $binValues["ex1"] = $_POST['specialservices1'];
    }

    if(!empty($_POST['comments1'])) {  
        $query .= ",comments1 = :c1";
        $binValues["c1"] = $_POST['comments1'];
        }   

        //error here
        $query .= "WHERE username1=:un1";
        $binValues["un1"] = $_POST['username1'];    


        $query .= "and comments1=:c1_old";
        $binValues["c1_old"] = $_POST['comments2_old'];


    try {
        $stmt = $db->prepare($query);
        $stmt->execute($binValues);

    } catch (PDOException $ex) {
        $response["success"] = 0;
        $response["message"] = "Database Error2. Please Try Again!";
        echo $ex->getMessage();
        die(json_encode($response));
    }    

    $response["success"] = 1;
    $response["message"] = "..............!";
    echo json_encode($response); 


?>

#1楼 票数:1 已采纳

由于我已经修复了先前的代码,因此建议您使用答案中的代码: https : //stackoverflow.com/a/29354781/3933332,因为它更易于阅读和理解。

如果使用我的代码,则可以添加WHERE子句,如下所示:

<?php

    //...

    foreach($checkedValues as $k => $v) {
        $query .= "$v = :$k,"; 
        $bindValues[$k] = $_POST[$v];
    }

    $query = rtrim($query, ",");

    //fixed code here
    if(isset($_POST['username1'])) {
        $query .= " WHERE username1=:un1";
        $bindValues["un1"] = $_POST["username1"];
    }

    if(isset($_POST['comments1'])) {
        $query .= " AND comments1=:c1_old";
        $bindValues["c1_old"] = $_POST["comments1"];
    }


    try {           
        $stmt = $db->prepare($query);
        $stmt->execute($binValues);         
    } catch (PDOException $ex) {
        $response["success"] = 0;
        $response["message"] = "Database Error2. Please Try Again!";
        echo $ex->getMessage();
        die(json_encode($response));
    }    

    //...

?>

#2楼 票数:-1

$binValues[":un1"] = $_POST['username1']

  ask by johnnal translate from so

未解决问题?本站智能推荐:

1回复

SQLSTATE[HY093]:参数号无效:参数未定义,但我已定义所有参数?

我正在使用PDO将一些数据以表名'User'推送到我的MySQL服务器,并且出现以下错误: 我用相同的错误消息查看了堆栈溢出的其他多个问题,归结为PDO准备和执行参数不匹配的情况。 但是,我的准备和执行是匹配的,并且已经检查了很多次,但是仍然出现错误。 这是我的代码:
1回复

SQLSTATE[HY093]:参数号无效[重复]

这个问题在这里已有答案: PHP PDOException:“SQLSTATE [HY093]:参数号无效” 4个答案 我在查找搜索查询时遇到了一些麻烦。 我收到这个错误。 SQLSTATE [HY093]:参数号无效 这是我的代码。 请帮帮我。 谢谢!
1回复

连接失败:SQLSTATE[HY093]:参数号无效

大家好,我的php代码有问题。 我不断收到此错误 0 1 2 3Connection failed: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of token
1回复

消息“SQLSTATE[HY093]”的异常“PDOException”:参数号无效

这看起来很简单,但由于某些原因,我无法使其正常工作...我需要我所能获得的所有帮助 当我像这样运行此功能时 我得到这个错误 消息“ SQLSTATE [HY093]:无效的参数号:未定义参数”的异常“ PDOException”在C:\\ wamp \\ www \\ ecomme
1回复

发生错误SQLSTATE[HY093]:无效的参数号:未定义参数

以下代码失败,并显示错误“发生错误SQLSTATE [HY093]:无效的参数号:未定义参数”。 请帮助解决此问题。 谢谢
1回复

错误:SQLSTATE[HY093]:无效的参数号:未定义参数PDO

我是PHP的新手,并且正在使用SlimFramework 3开发API 我有这个POST方法 当我尝试使用Postman发送值时,它返回以下错误: 错误:SQLSTATE [HY093]:无效的参数号:未定义参数 我在邮递员中有正确的标题
1回复

PDO插入错误:SQLSTATE[HY093]:参数号无效:未定义参数

在尝试执行PDO插入时,我无法找到我收到的错误的解决方案。 我一直在收到错误 这是我的代码: 这是我添加bindValues的地方(我只是这样做因为StackOverflow不允许大的代码块)
3回复

PDOStatement::execute():SQLSTATE[HY093]:无效的参数号:未定义参数

以下是我的代码,我无法解决此错误。 任何帮助表示赞赏。 我正在尝试更新数据库中的表。