Неправильный способ передачи данных в подготовленный оператор, вы используете индекс для массива, который является нумерованным индексированным массивом на основе 0. Вот почему вы получаете ошибку. Хотя не уверен, зачем тебе этот массив ...
$rows = array($domain, $url);
Вместо этого я бы предложил использовать ...
$stmt = $conn->prepare("INSERT INTO linkss(id, domain, url)
VALUES (NULL, :domain, :url)");
foreach($url as $value){
$stmt->bindParam(':domain', $domain);
$stmt->bindParam(':url', $value);
$stmt -> execute();
}
Также следует вставить запись для каждого URL, а не последнего, поскольку execute()
находится внутри цикла.
Обновление:
Вам также необходимо изменить код, который составляет список URL-адресов, это ранее всегда перезаписывало последний URL-адрес, это создаст список всех URL-адресов ...
$url = array();
foreach($matches as $match) {
$url[]=$match[2];
}