dpmir1988 2017-01-06 02:15
浏览 34
已采纳

php插入基于html表单的数组

For the life of me I can't figure out why posting to this page is not working, i have been trying things I have found from all over Stackoverflow and the internet.

The first part works for the "id" section but the update function does not.

PHP message: PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters'

updatecompany.php(21): Fr\LS::updateCompany(Array, NULL)

These are from the error logs. Any help would be deeply appreciated.

if (isset($_POST["id"]) && is_numeric($_POST["id"])) {
    $id = $_POST["id"];
    $vid = \Fr\LS::getCompany("id", $id);
    $vname = \Fr\LS::getCompany("name", $id);
    $vlogo = \Fr\LS::getCompany("logo", $id);
    $vinfo = \Fr\LS::getCompany("info", $id);
    $vsite = \Fr\LS::getCompany("site", $id);
    $vest = \Fr\LS::getCompany("est", $id);
} elseif ( isset($_POST["update"]) ) {
    \Fr\LS::updateCompany(array(
        "name" => $_POST["name"],
        "logo" => $_POST["logo"],
        "info" => $_POST["info"],
        "site" => $_POST["site"],
        "est" => $_POST["est"]
    ),
    $_POST["id"]);
    echo "<center>Company updated!";
    echo "<br><a href='updatecompany.php" . $_POST["id"] ."'>go back</a></center>";
} else {
   die("No server with that id.");
}

public static function updateCompany($toUpdate = array(), $company = null) {
    self::construct();
    if( is_array($toUpdate) && !isset($toUpdate['id']) ) {
        if($company == null) {
            echo "No company ID set!";
        }
        $columns = "";
        foreach($toUpdate as $k => $v) {
            $columns .= "`$k` = :$k, ";
        }
        $columns = substr($columns, 0, -2); // Remove last ","

        $sql = self::$dbh->prepare("SELECT {$columns} FROM companys WHERE `id` = ? ORDER BY `id` LIMIT 1");
        $sql->bindValue(":id", $company);
        foreach($toUpdate as $key => $value) {
            $value = htmlspecialchars($value);
            $sql->bindValue(":$key", $value);
        }
        $sql->execute();
    } else {
        return false;
    }
}
  • 写回答

1条回答 默认 最新

  • dotn30471 2017-01-06 02:38
    关注

    One part of your problem is:

    This

    "SELECT {$columns} FROM companys WHERE `id` = ? ORDER BY `id` LIMIT 1"
    

    is no update statement.

    Change it to

    "UPDATE companys SET {$columns} WHERE `id` = :id"
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置