Запись массива PHP в БД SQL

Пытаюсь сохранить массив в БД.

<?php
$host = 'loccalgost'; // адрес сервера 
$database = 'name'; // имя базы данных
$user = 'login'; // имя пользователя
$password = 'password'; // пароль
// подключаемся к серверу
$link = mysqli_connect($host, $user, $password, $database) 
    or die("Ошибка " . mysqli_error($link));
?>
<?php
 
include('simple_html_dom.php');
 
//to parse a webpage
$html = file_get_html('http://mysite.ru/index.html');
$links = array();
foreach($html->find('a') as $a) {
 $links[] = $a->href;
 $sql = "INSERT INTO Links (ID, link) VALUES ($id, $links)";
}
 if (mysqli_query($conn, $sql)) {
      echo "New record created successfully";
} else {
      echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
 // закрываем подключение
mysqli_close($link);
?>

Созданная таблица: ID (первичный) int(11)
Link char(100)
В итоге получаю ошибку: Error: INSERT INTO Links (ID, link) VALUES (, Array) Подскажите где я ошибся. Спасибо


Ответы (1 шт):

Автор решения: Vyacheslav Odinokov

Согласен с MoloF.

Самое лучшее решение хранения массива в таблице или любого другого объекта. Это сериализовать его, в json или еще что-то.

А затем хранить в таблице. При использовании просто сериализовать обратно в массив.

serialize() и json_encode().

Так же у тебя неизвестная переменная $id из-за этого у тебя получается ошибка в синтаксисе (, Array).

Сделай колонку ID автоматическим инкрементом. И используй примерно такое:

$sql = "INSERT INTO Links (link) VALUES (json_encode( $links ) )";
→ Ссылка