мульти [] массив ввода вставки PHP SQL - PullRequest
0 голосов
/ 02 мая 2018

Вот моя форма ввода-

<input type="text" multiple name="name[]">  
<input type="text" multiple name="mobile[]"> 
<input type="text" name="invoice_no">

Вот php-скрипт для вставки mySQL, который я пробовал -

$name=mysqli_real_escape_string($con, $_POST['name']);
$mobile=mysqli_real_escape_string($con, $_POST['mobile']);
$invoice_no=mysqli_real_escape_string($con, $_POST['invoice_no']);


foreach($mobile as $a => $b){

$sql="INSERT INTO `customer` (`name`, `mobile`, `invoice_no`)
VALUES('$name[$a]', '$mobile[$a]', '$invoice_no')";

}

if ($con->query($sql) === TRUE) {
echo "Success";
} else {
echo("Error: " . mysqli_error($con));
}

Я пытаюсь вставить имя [] и мобильный [] массив как отдельную строку вместе с invoice_no, который является фиксированными данными. Как это сделать?

1 Ответ

0 голосов
/ 02 мая 2018

Вам нужно перенести вашу строку в цикл - как указывало @smith, mysqli_real_escape_string следует применять к строке, а не к массиву. Кроме того, вы делаете только запрос, который будет вставлять один набор значений вместо одного, который будет вставлять все значения. Таким образом, вы можете либо ввести выполнение запроса в цикл, либо создать запрос, который будет вставлять все строки одновременно. Последний является наиболее эффективным:

$invoice_no = mysqli_real_escape_string($con, $_POST['invoice_no']);
$sql = "INSERT INTO `customer` (`name`, `mobile`, `invoice_no`) VALUES ";
$values = array();
foreach ($_POST['mobile'] as $key => $value) {
    $name = mysqli_real_escape_string($con, $_POST['name'][$key]);
    $mobile = mysqli_real_escape_string($con, $value);
    $values[] = "('$name', '$mobile', '$invoice_no')";
}
$sql .= implode(',', $values);
if ($con->query($sql) === TRUE) {
    echo "Success";
} else {
    echo("Error: " . mysqli_error($con));
}

Обратите внимание, что во избежание возможной инъекционной атаки вам действительно следует использовать подготовленные операторы. См. Руководство по mysqli_prepare , чтобы узнать, как их использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...