查询删除然后重新插入值

时间:2013-12-03 01:41:58

标签: php mysql

我有来自mysql表person的数据通过foreach循环填充几个输入字段。所有值都共享一个名为academy_id的外键。我能够运行单个查询来存储值或运行查询来更新值。我现在正在尝试完成删除存储在表中的值然后重新插入值的功能。尝试这样做时,我在Insert查询语句附近遇到语法错误。如何先删除该值,然后将其重新插入表中?这是一个实时EXAMPLE

// SELECT Query显示值

<?php
$id = 15; 
$db_select3  = $db_con->prepare("
SELECT     a.name, 
           a.academy_id,
           p.person_id,
           p.first_name,
           p.last_name
    FROM academy a
    LEFT JOIN person p ON a.academy_id = p.academy_id
    WHERE a.academy_id = :id
");
if (!$db_select3) return false;
if (!$db_select3->execute(array(':id' => $id))) return false;
    $results3 = $db_select3->fetchAll(\PDO::FETCH_ASSOC);
    if (empty($results3)) return false;
echo "<strong>Personel Information:</strong>";
$s = 1;
foreach ($results3 as $value3){ 
    echo "<ul id=\"pq_entry_".$s."\" class=\"clonedSection\">";
    echo "<li><input id=\"person_fname_".$s."\" name=\"person_fname_".$s."\" placeholder=\"Person #1 - First Name\" type=\"text\" value='" . $value3['first_name'] ."'/><input type=\"hidden\" name=\"person_id_".$s."\" value='". $person_id = $value2['person_id']."'/></li>";
    echo "<li><input id=\"person_lname_".$s."\" name=\"person_lname_".$s."\" placeholder=\"Last Name\" type=\"text\" value='" . $value3['last_name'] ."'/></li>";
    echo "</ul>";
$s++;   
}   
echo "<input type='button' id='btnAdd' value='add another Person' />
<input type='button' id='btnDel' value='Delete' /></br>";

删除然后插入值 - 此处出现问题

if(isset($_POST['submit'])) {
        //Insert or Update Values 
        $f = 1;
        while(isset($_POST['person_fname_' . $f]))
        {

            $person_fname = $_POST['person_fname_' . $f];
            $person_lname = $_POST['person_lname_' . $f];


            $query_init3 = "DELETE FROM person WHERE academy_id=:id  INSERT INTO person (academy_id, first_name, last_name) VALUES (:id,:person_fname,:person_lname);";
            $query_prep3 = $db_con->prepare($query_init3);
            $query_prep3->execute(array(
                "id" => $id,
                "person_fname" => $person_fname,
                "person_lname" => $person_lname
            ));

            $f++;
        }
}

1 个答案:

答案 0 :(得分:1)

尝试执行两个单独的查询来实现此目的,例如首先运行Delete查询:

$query_init3 = "DELETE FROM person WHERE academy_id=:id;";
$query_prep3 = $db_con->prepare($query_init3);
$query_prep3->execute(array(
"id" => $id
));

然后运行您的Insert查询:

  $query_init4 = "INSERT INTO person (academy_id, first_name, last_name) VALUES (:id,:person_fname,:person_lname);";
            $query_prep4 = $db_con->prepare($query_init4);
            $query_prep4->execute(array(
                "id" => $id,
                "person_fname" => $person_fname,
                "person_lname" => $person_lname
            ));