Php 执行查询时参数编号无效

Php 执行查询时参数编号无效,php,mysql,Php,Mysql,我正在尝试查询一个值,以及是否有重复的键更新表个人。但是我得到一个错误无效的参数号'。这会导致查询根本不起作用personal_id是正确执行重复密钥更新的唯一标识符。如何修复查询中的无效参数号 PHP HTML 您错过了每个参数前面的:: $query_prep3->execute(array( ":id" => $id, ":personal_id" => $person_id,

我正在尝试查询一个值,以及是否有重复的键更新表
个人
。但是我得到一个错误
无效的参数号'
。这会导致查询根本不起作用
personal_id
是正确执行重复密钥更新的唯一标识符。如何修复查询中的无效参数号

PHP

HTML


您错过了每个参数前面的

        $query_prep3->execute(array(
            ":id" => $id,
            ":personal_id" => $person_id,
            ":person_fname" => $person_fname,
            ":person_lname" => $person_lname
        ));

这不是很直观,但在文档中有解释:

您不能两次使用同一个绑定参数,您需要指定一个新的绑定参数

$query_init3 = "INSERT INTO person (person_id, academy_id, first_name, last_name) VALUES (:personal_id, :id,:person_fname,:person_lname)
                  ON DUPLICATE KEY UPDATE academy_id=:id2, first_name=:person_fname2, last_name=:person_lname2";
$query_prep3 = $db_con->prepare($query_init3);
$query_prep3->execute(array(
    "id" => $id,
    "personal_id" => $person_id,
    "person_fname" => $person_fname,
    "person_lname" => $person_lname,
    "id2" => $id,
    "person_fname2" => $person_fname,
    "person_lname2" => $person_lname
));

尝试不添加3个参数,而是使用不同的names@VitKos你能解释一下吗?不知道你的意思。抱歉。抱歉,请尝试使绑定变量不具有相同的名称。@VitKos好的,我做了,但没有更改:/。它与分号没有区别。@Code_Ed_Student您无论如何都必须使用它。实际上,您可以在查询中多次使用它,只要它是命名参数,就可以只绑定一个参数。
        $query_prep3->execute(array(
            ":id" => $id,
            ":personal_id" => $person_id,
            ":person_fname" => $person_fname,
            ":person_lname" => $person_lname
        ));
$query_init3 = "INSERT INTO person (person_id, academy_id, first_name, last_name) VALUES (:personal_id, :id,:person_fname,:person_lname)
                  ON DUPLICATE KEY UPDATE academy_id=:id2, first_name=:person_fname2, last_name=:person_lname2";
$query_prep3 = $db_con->prepare($query_init3);
$query_prep3->execute(array(
    "id" => $id,
    "personal_id" => $person_id,
    "person_fname" => $person_fname,
    "person_lname" => $person_lname,
    "id2" => $id,
    "person_fname2" => $person_fname,
    "person_lname2" => $person_lname
));