Каждый раз, когда вы выполняете итерацию в foreach, вы перезаписываете переменную $ sql. Поскольку вы выполняете запрос после цикла for, в базу данных вставляется только последний элемент массива.
Чтобы решить эту проблему, вы должны поместить запрос в цикл for:
foreach ($arr as $value) {
$sql = "INSERT INTO videos (username, src, type, position)
VALUES ('admin', '".$value."', 'vide', '0')";
if ($conn->query($sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
Однако вы должны позаботиться об SQL-инъекции, я рекомендую вам взглянуть на PDO. http://php.net/manual/en/ref.pdo-mysql.php
Позвольте мне преобразовать это в пример PDO:
$sql = "INSERT INTO videos (username, src, type, position ) VALUES ('admin', :value, 'vide', '0')";
if ($stmt = $PDO->prepare($sql)) {
foreach($arr as $value) {
$binds['value'] = $value;
if ($stmt->execute($binds)) {
echo "Row inserted successfully"
}
}
}
$ PDO будет переменной, в которой хранится выражение.