【问题标题】:Error trying to insert with PDO: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined尝试使用 PDO 插入时出错:PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
【发布时间】:2017-11-30 10:19:00
【问题描述】:

我收到此错误: 警告:PDOStatement::execute(): SQLSTATE[HY093]: 参数号无效:参数未在

中定义

数组( [0] => HY093 [1] => [2] => )

$arr = array();
    $values = "";
    $sql = "INSERT INTO avisos(nombre ";
    $values.=":nombre";
    $arr[] = "nombre => $nombre";

    if($plataforma!=""){
        $sql .= ", idPlataforma";
        $values.=", :idPlataforma";
        $arr[] = "idPlataforma => $plataforma";
    }
    if(idCompania!=""){
        $sql .= ", idCompania";
        $values.=", :idCompania";
        $arr[] = "idCompania => $compania";
    }
    if($fondo!=""){
        $sql .= ", idFondo";
        $values.=", :idFondo";
        $arr[] = "idFondo => $fondo";
    }
    if($remitente != ''){
        $sql .= ", idRemitente";
        $values.=", :idRemitente";
        $arr[] = "idRemitente => $remitente";
    }
    $sql.= ") VALUES ($values);";

    $stmt = $con->prepare($sql); 

    if ($stmt->execute($arr)){
        echo "OK";
    }

我看不出我在哪里失败了。

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

    您发送到execute() 的数组需要有键值对,其中键是占位符,值是您要插入的值。

    所以而不是:

    $arr[] = "nombre => $nombre";
    

    你需要:

    $arr[':nombre'] = $nombre;
    

    或:

    $arr['nombre'] = $nombre;
    

    等等

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 2018-04-22
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 2013-03-19
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多