Я пытаюсь вставить более 100 строк в базу данных postgresql, используя PHP в цикле. Я не получаю никаких ошибок.
Данные вставляются, когда я пытаюсь добавить от 50 до 60 записей. но когда записи около 100 и выше, они не вставляются.
Ниже приведен код, который я попробовал. Пожалуйста, пройдите и помогите мне решить эту проблему.
Заранее спасибо.
<?php
$userid = $_SESSION['user_id'];
$array ='';
$resultAgain ='';
if (isset($_POST['save'])) {
// $sponsorship_id = $_POST['sponsorid'];
$resultAgain=array();
$resultAgain = $_SESSION['arr_rows'];
for ($i = 0; $i <count($resultAgain); ++$i) {
$recieptid = $resultAgain[$i]['recieptid'];
$childid = $resultAgain[$i]['childid'];
$openingbalance_fee = $resultAgain[$i]['openingbalance_fee'];
$openingbalance_familyhelp = $resultAgain[$i]['openingbalance_familyhelp'];
$mayreciept = $resultAgain[$i]['mayreciept'];
$december_reciept = $_POST['decreciept'.$resultAgain[$i]['presentclass']];
$adminfees = $_POST['adminfees'.$resultAgain[$i]['presentclass']];
$schoolfee = $_POST['schoolfee'.$resultAgain[$i]['presentclass']];
$familyhelp = $resultAgain[$i]['family_help'];
$year = $_POST['yearName'];
$submit = $_POST['save'];
// call insert function
$sql1="SELECT fn_reciept_insert($childid,
'$openingbalance_fee',
'$openingbalance_familyhelp',
'$mayreciept',
'$december_reciept',
'$adminfees',
'$familyhelp',
'$schoolfee',
'$year',
$userid,
localtimestamp,
$userid,
localtimestamp)";
$result1 = pg_query($dbconn,$sql1);
if (!$result1) {
echo '<script>alertMX("Data Not Updated")</script>';
}
else
{
echo '<script>alertMX("Data inserted Successfully")</script>';
} }
}
}
?>
Во-первых, убедитесь, что вы закрываете это соединение с БД в конце вашего скрипта. Тогда, если у вас продолжаются проблемы, попробуйте увеличить max_connections
https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server#max_connections
ALTER SYSTEM SET max_connections TO 300;
и перезапустите сервер postgresql.
Также проблема может быть не в количестве данных, которые вы пытаетесь INSERT
, Вы создаете запрос, используя неэкранированные данные. Что это значит? Если одна из ваших переменных, которые вы поместили в эту большую строку запроса, имеет '
символ, строка запроса будет испорчена, и это большая проблема безопасности (читайте о впрыск sql). Чем больше объем данных, тем больше вероятность '
будет появляться. Вам следует избежать ваших данных
Других решений пока нет …