#php #mysql
#php #mysql
Вопрос:
$q = $dbc -> prepare ("INSERT INTO accounts (type, username, gender, email, password) VALUES (?, ?, ?, ?, ?)");
$q -> bind_param('sssss', ($_POST['type']), ($_POST['username']), ($_POST['gender']), ($_POST['email']), ($_POST['password']));
$q -> execute();
По сравнению с;
$type = $_POST['type'];
$username = $_POST['username'];
$gender = $_POST['gender'];
$email = $_POST['email'];
$password = $_POST['password'];
$q = $dbc -> prepare ("INSERT INTO accounts (type, username, gender, email, password) VALUES (?, ?, ?, ?, ?)");
$q -> bind_param('sssss', $type, $username, $gender, $email, $password);
$q -> execute();
Есть ли какие-либо преимущества в любом случае?
Спасибо.
Комментарии:
1. Я переместил ваши объявления переменных так, чтобы они появлялись перед оператором, иначе все переменные были бы пустыми, и я сомневаюсь, что вы этого хотели. Переключите его обратно, если по какой-то причине вы этого хотели.
2. @eykanal: Вы не должны вносить никаких исправлений в вопрос, который вы можете отформатировать, но вы не должны исправлять код. Подумайте об ответе @paragon
Ответ №1:
Они оба одинаковы, что лучше, зависит только от того, что вам действительно легче читать и поддерживать.
Комментарии:
1. Да, я думаю, что первое лучше — меньше кода и лучшее время загрузки! Просто хотел убедиться, что они одинаковые: p
2. Согласен с Basic — первый не генерирует локальную переменную clutter и гораздо более удобочитаем. Разработчики PHP склонны присваивать переменные post и get локальным переменным.. Я не вижу смысла делать это, зная, что это создаст шум в коде…
Ответ №2:
Нет, оба этих метода идентичны.
Ответ №3:
Единственное различие между этими двумя операторами (насколько я могу судить) заключается в том, что во втором примере вы заранее захватываете переменные POST. Это ничего не дает, если вам не понадобятся эти переменные позже, или вы просто хотите, чтобы ваш код имел немного больше смысла.