я застрял здесь. я хочу очистить существующую таблицу перед вставкой цикла запросов. но результат возвращает мне только последний цикл запроса. поэтому команда 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();
}
?>
Вы должны связать параметры внутри цикла
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();
}
Вы можете попробовать это?
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();
} ?>
Все, что вы предложили, верно. Это была моя ошибка. я понял! я забыл, что вызвал скрипт php с помощью вызова ajax, который встроен в цикл diffrent. так что я сошел с ума от второго вызова Ajax для оператора усечения вне этого цикла, и все работает нормально. Спасибо за вашу помощь.