В настоящее время у меня есть ассоциативный массив, называемый полями, в котором хранятся все мои переменные $ _POST из полей ввода HTML. Ассоциативные переменные массива используются, когда я пытаюсь привязать свои значения к базе данных mySQL. Таким же образом у меня также есть те же имена, что и заголовки столбцов для базы данных mySQL. Так что это очень утомительно и долго. Есть ли способ, возможно, пропустить столбцы и присвоить значение другому циклу для ассоциативного массива? Пожалуйста, ознакомьтесь с приведенным ниже примером и заблаговременно за вашу помощь.Рефакторинг для цикла mySQL и кода PHP
try {
$insertSql = "INSERT INTO tableExample";
$sqlCols = " (
a,
b,
c,
d,
e,
f,
g,
h,
i,
j,
k,
l,
m,
n,
o,
p,
q,
r,
s,
t,
u,
v,
w,
x
)";
$result = $db->prepare($insertSql . $sqlCols . " VALUES (
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?,
?)");
$result->bindValue(1,$fields['a'],PDO::PARAM_STR);
$result->bindValue(2,$fields['b'],PDO::PARAM_STR);
$result->bindValue(3,$fields['c'],PDO::PARAM_STR);
$result->bindValue(4,$fields['d'],PDO::PARAM_STR);
$result->bindValue(5,$fields['e'],PDO::PARAM_STR);
$result->bindValue(6,$fields['f'],PDO::PARAM_STR);
$result->bindValue(7,$fields['g'],PDO::PARAM_STR);
$result->bindValue(8,$fields['h'],PDO::PARAM_STR);
$result->bindValue(9,$fields['i'],PDO::PARAM_STR);
$result->bindValue(10,$fields['j'],PDO::PARAM_STR);
$result->bindValue(11,$fields['k'],PDO::PARAM_STR);
$result->bindValue(12,$fields['l'],PDO::PARAM_STR);
$result->bindValue(13,$fields['m'],PDO::PARAM_STR);
$result->bindValue(14,$fields['n'],PDO::PARAM_STR);
$result->bindValue(15,$fields['o'],PDO::PARAM_STR);
$result->bindValue(16,$fields['p'],PDO::PARAM_STR);
$result->bindValue(17,$fields['q'],PDO::PARAM_STR);
$result->bindValue(18,$fields['r'],PDO::PARAM_STR);
$result->bindValue(19,$fields['s'],PDO::PARAM_STR);
$result->bindValue(20,$fields['t'],PDO::PARAM_STR);
$result->bindValue(21,$fields['u'],PDO::PARAM_STR);
$result->bindValue(22,$fields['v'],PDO::PARAM_STR);
$result->bindValue(23,$fields['w'],PDO::PARAM_STR);
$result->bindValue(24,$fields['x'],PDO::PARAM_STR);
$result->execute();
} catch (Exception $e) {
echo "Unable to store data";
echo $e->getMessage();
exit;
}
Вы всегда можете использовать имена полей привязки карты и индексы значений, такие как $ fields ['a'] = 1; $ полей [ 'B'] = 2; или сокращенно, как $ fields = ['a' => 1, 'b' => 2] ;. Затем просто повторите эти поля и сделайте свое дело. Не самое изящное решение, но хватит :). PD: Те же имена для столбцов и столбцов базы данных небезопасны, поскольку они в основном раскрывают вашу структуру базы данных там !. –