Какова наилучшая практика для перемещения нескольких операторов foreach в массив? Я повторяю этот процесс в своем коде, когда знаю, что есть лучший и быстрый способ сделать это. Возможно ли isset
foreach
? Я начинаю работать с PDO
, как бы я сократил свой код ниже или переместил его в массив какого-то типа?Работа с foreach, issets, массивами?
if (isset($_POST['one'], $_POST['two'], $_POST['three'])) {
foreach($_POST['one'] as $id => $one) {
$sql = "UPDATE table SET one = ? WHERE id = ?";
$q = $db->prepare($sql);
$q->execute(array($one, $id));
}
foreach($_POST['two'] as $id => $two) {
$sql = "UPDATE table SET two = ? WHERE id = ?";
$q = $db->prepare($sql);
$q->execute(array($two, $id));
}
foreach($_POST['three'] as $id => $three) {
$sql = "UPDATE table SET three = ? WHERE id = ?";
$q = $db->prepare($sql);
$q->execute(array($three, $id));
}
}
РЕДАКТИРОВАТЬ: Пример HTML/PHP (INPUT TYPE = 'Текст') для более ясного примера:
$stmt = $db->query('SELECT * FROM table ORDER BY id ');
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "
<input type='text' id='one' value='{$row['one']}' name = 'one[{$row['id']}]' />
<input type='text' id='two' value='{$row['two']}' name = 'two[{$row['id']}]' />
<input type='text' id='three' value='{$row['three']}' name = 'three[{$row['id']}]' />";
}
Какова структура ваших $ _POST? кажется, что вы можете сначала оптимизировать HTML-конец, потому что это выглядит немного странно. –