Несколько вставок в MySQL с помощью PHP
У меня есть скрипт, который вставляет идентификатор компании, идентификатор пользователя и дату и время транзакции, когда кто-то вводит свою электронную почту. Теперь я должен добавить выпадающий список выбора, который позволяет пользователю выбрать количество пожертвований, которые он хочет сделать, поэтому нужно только один раз ввести свой адрес электронной почты. Каков наилучший способ сделать это? Я думал что-то вроде этого:
$coid = $row['companyid'];
$userid = $_SESSION['userid'];
$selectbox = $_POST['select']; // number value 1-10
// old query
mysql_query = ("INSERT INTO donations(company, user)");
// new query
$i=1
while($i<=$selectbox) {
mysql_query = ("INSERT INTO donations(company, user)");
$i++
}
Или что-то вдоль этих линий. Это лучший способ сделать это? Лучшие способы?
2 ответа
Вы должны сделать таблицу базы данных с 3 столбцами (для этого вопроса).
Я дам вам код для создания необходимой таблицы, просто скопируйте и вставьте его в PHPmyAdmin:
Create Table donations(
company_id int,
user_id int,
donate_num int,
datetime DATETIME
)
Затем используйте INSERT INTO
функция для обновления базы данных с использованием новых функций mysqli (замените имя сервера / пользователя и т. д. данными вашей базы данных):
$mysqli= new mysqli('SERVER','USERNAME','PASSWORD','DATABASE NAME')
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
function escapeStringSlash($value) {
global $mysqli;
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = $mysqli->real_escape_string($value);
}
return $value;
}
$coid=escapeStringSlash($row['companyid']);
$userid = escapeStringSlash($_SESSION['userid']);
$selectbox = escapeStringSlash($_POST['select']);
$date = new DateTime();
$currentTime = $date->format("Y-m-d H:i:s");
if($insertDonations=$mysqli->query("INSERT INTO donations(company_id,user_id,donate_num,datetime) VALUES(".$coid.",".$userid.",".$selectbox.",'".$currentTime."')"){
echo "Number of donations received";
}else{
echo "There was a problem inserting this.";
}
$mysqli->close();
Во-первых, прекратить использование mysql_
функции, поскольку они устарели. использование mysqli_
или же PDO
функции вместо
Вы должны использовать подготовленные операторы или дезинфицировать ваши переменные, чтобы предотвратить внедрение SQL.
Что касается лучшего подхода, вы можете поместить их в массив и затем выполнить при выполнении. Это хорошая отправная точка. Он использует PDO для вставки массива.
С вашим текущим кодом мне неясно, как вы отслеживаете количество пользователей, желающих делать пожертвования, но вы можете сделать что-то вроде:
$i = 1;
while($i <= $selectbox) {
$insertArray[] = "$coid, $userid";
$i++;
}
mysql_query("INSERT INTO donations (company, user) VALUES (" . implode('), (', $insertArray) . ")");