У меня есть 10 входов с тем же именем, и я пытаюсь вставить их в каждую строку , но я не уверен, как это сделать, я искал в google, чтобы узнать, есть ли любые ответы, но не удались.Вставьте все данные в разные строки PDO
Надеюсь, я четко объяснил.
Мои коды ниже:
TQ
I петля мои входы с PHP
for($x = 0; $x <= 10; $x++){
print '
<tr>
<td><input class="form-mod" type="text" name="sn[]"/></td>
<td><input class="form-mod" type="text" name="ename[]"/></td>
<td><input class="form-mod" type="text" name="hrs[]"/></td>
<td><input class="form-mod" type="text" name="sales[]"/></td>
<td><input class="form-mod" type="text" name="wages[]"/></td>
<td ><input class="form-mod" type="text" name="inc[]"/></td>
</tr>
';
}
PHP КОД
if(isset($_POST['submited'])){
$rows = array(array($_POST['pc'],$_POST['wn'],$_POST['from'],$_POST['to'],$_POST['sn'],$_POST['ename'],$_POST['hrs'],$_POST['sales'],$_POST['wages'],$_POST['inc'])
);
$args = array_fill(0, count($rows[0]), '?');
$query = "INSERT INTO wages (program_code,week_no,`from`,`to`,serial_no,name,hrs,sales,wages,incentive) VALUES (".implode(',', $args).")";
$stmt = $dbo->prepare($query);
foreach ($rows as $row)
{
$stmt->execute($row);
}
if(!$stmt->rowCount() >= '1'){
print "unsuccessfully insert";
}else{
print "successfully inserted";
}
}
ОБНОВЛЕНО
Я пересмотрел код, который @Vitor Lima типа. я удалю этот код "" implode(',', $row)
"" и замените его на ?,?,?,?
, и он сработал. но если я ввожу только 2 строки со значениями на входной странице, он все равно будет вставлять оставшиеся 8 в базу данных, поэтому 2 строки со значениями и 8 пусты. любая идея, как преодолеть это
if(isset($_POST['submited'])){
for($x = 0; $x < 10; $x++){
$row = array($_POST['pc'], $_POST['wn'], $_POST['from'], $_POST['to'],
$_POST['sn'][$x], $_POST['ename'][$x], $_POST['hrs'][$x],
$_POST['sales'][$x], $_POST['wages'][$x], $_POST['inc'][$x]);
$query = "INSERT INTO wages (program_code, week_no,`from`,`to`,serial_no,
name,hrs,sales,wages,incentive) VALUES (?,?,?,?,?,?,?,?,?,?)";
$stmt = $dbo->prepare($query);
$stmt->execute($row);
if(!$stmt->rowCount() >= '1'){
print "unsuccessfully insert";
}else{
print "successfully inserted";
}
}
}
Какие ошибки вы получаете? Я думаю, вы должны сделать цикл в PHP-скрипте (как и на вашей странице) и вставить один за другим. –
выводит слово «Array to string conversion» – Jonathan
@Jonathan Array для строковых ошибок преобразования возникает при попытке вывода массивов. PHP знает, как выводить строковые значения (т. Е. Строки, числа и т. Д.). Если вы хотите вывести массив, вам нужно каким-то образом отформатировать его. –