MySql Truncate должен удалить перед вставкой цикла, но действует также в этом цикле

я застрял здесь. я хочу очистить существующую таблицу перед вставкой цикла запросов. но результат возвращает мне только последний цикл запроса. поэтому команда truncate также действует в этом цикле. кто-нибудь может сказать мне, почему? вот что у меня так далеко.

<?PHP
if(isset($_POST["data"])) {
$grpData = $_POST["data"];

require_once('../mysql_connect.php');

try {
$dlt = $dbc->prepare("TRUNCATE TABLE table1");
$dlt->execute();

$stmt = $dbc->prepare("INSERT INTO table1 (trn,rnd,grp,gndprx,rce) VALUES (?,?,?,?,?)");

$stmt->bind_param("siiii", $trn,$rnd,$grp,$gndprx,$rce);

foreach($grpData as $d){
$trn = $d[0];
$rnd = intval($d[1]);
$grp = intval($d[2]);
$gndprx = intval($d[3]);
$rce = intval($d[4]);

$stmt->execute();
}

}

catch(PDOException $ex) {

$dbc->rollBack();
echo $ex->getMessage();
}



$dbc->close();
}
?>

1

Решение

Вы должны связать параметры внутри цикла

    foreach($grpData as $d){
$trn = $d[0];
$rnd = intval($d[1]);
$grp = intval($d[2]);
$gndprx = intval($d[3]);
$rce = intval($d[4]);
$stmt->bind_param("siiii", $trn,$rnd,$grp,$gndprx,$rce);
$stmt->execute();
}
1

Другие решения

Вы можете попробовать это?

    require_once('../mysql_connect.php');

try {
$dbc->exec("TRUNCATE TABLE table1");
$stmt = $dbc->prepare("INSERT INTO table1 (trn,rnd,grp,gndprx,rce) VALUES (?,?,?,?,?)");

foreach($grpData as $d){
$trn = $d[0];
$rnd = intval($d[1]);
$grp = intval($d[2]);
$gndprx = intval($d[3]);
$rce = intval($d[4]);
$stmt->bind_param("siiii", $trn,$rnd,$grp,$gndprx,$rce);
$stmt->execute();
}

}

catch(PDOException $ex) {

$dbc->rollBack();
echo $ex->getMessage();
}

$dbc->close();

} ?>
1

Все, что вы предложили, верно. Это была моя ошибка. я понял! я забыл, что вызвал скрипт php с помощью вызова ajax, который встроен в цикл diffrent. так что я сошел с ума от второго вызова Ajax для оператора усечения вне этого цикла, и все работает нормально. Спасибо за вашу помощь.

0
По вопросам рекламы [email protected]