У меня возникла проблема. У меня есть куча входов, которые имеют одно и то же имя. Это создает массивы, которые помещаются в базу данных и что все работает нормально, но у меня есть основная дилемма, пытаясь сохранить пустые строки входов от создания пустых записей в таблице базы данных.Ограничить цикл цикла от вставки пустых строк MySQL
код как таковой:
foreach($_POST['datetime'] as $dbrow=>$startdate) {
if(isset($_POST['def'])) {
$start = $startdate;
$abc = $_POST['abc'][$dbrow];
$def = $_POST['def'][$dbrow];
$ghi = $_POST['ghi'][$dbrow];
$db_insert = "INSERT INTO tablename (start, abc, def, ghi) VALUES('$start', '$abc', '$def', '$ghi')";
Это нормально, и денди, но я не могу получить, если заявление на работу. Форма, использующая POST для получения информации о пользователях, имеет 5 строк входов с четырьмя столбцами (start, abc, def, ghi). Если я введу данные в форму и отправлю ее, то все данные поступают в базу данных (yay - success), если я только вводю данные в строках 1-4, тогда база данных все еще вводит 5 строк данных. Что я делаю не так?
--------------------- EDIT --------------------- Хорошо, поэтому при более глубоком взгляде, что, по-видимому, происходит, это код, который хочет представить ВСЕ строки динамически генерируемых входов, независимо от того, содержат ли они контент или нет. Поэтому я придумал следующий код:
$db_tur = count(array_filter($start_date));
for($db_total_used_rows=0;$db_total_used_rows<=$db_tur;$db_total_used_rows++){
$db_start_date = $_POST['datetime'][$db_total_used_rows];
$db_abc = $_POST['abc'][$db_total_used_rows];
$db_def = $_POST['def'][$db_total_used_rows];
$db_ghi = $_POST['ghi'][$db_total_used_rows];
}
$db_insert = .....;
В теории, что это делает $ db_tur подсчитывает все входы используются под start_date переменной. Затем я разбиваю его на массив count, который должен быть использован как $ db_total_used_rows. Однако, похоже, это не ограничивает общее количество строк входов, вставленных в базу данных. Поэтому я думаю, что он вернулся к чертежной доске, если у кого-то еще не было лучшего представления о том, как это сделать. Я так готов отказаться сейчас.
Почему вы проверяете, установлен ли 'if (isset ($ _ POST ['def']))'? Почему не просто 'if (isset ($ startdate))'? –
Почему вы не проверяете значения, входящие в & если они пусты, пропустите выполнение запроса для них. –
В этом коде есть некоторые уязвимости в SQL-инъекции ... –