Несколько вставок в 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) . ")");
Другие вопросы по тегам