Эта тема на forum.dklab.ru


Moroz: Как данные из массива добавить в БД
Есть массив $ok[1], и цикл выводящий этот массив:

for ($i=0; $i<count($ok[1]); $i++){
echo $ok[1][$i]."<br>";
}

Как значение массива построчно передать в БД ???, $sql = "insert into test (text) values ('$ok[1][$i]."<')"; в цикле - не работает.
Функция serialize() - не интересует.

Пишу скрип импорта ссылок с удаленного сервера в БД:


$str = implode("",file("http://www.server.ru/link.html"));
preg_match_all("!<link>(.*?)</link>!si",$str,$ok);

for ($i=0; $i<count($ok[1]); $i++){
echo $ok[1][$i]."<br>";
}

Владимир Хоменко:

Функция serialize() - не интересует.


А меня очень интересует. Не расскажете?

Ну расскажите, что Вы пробовали, что у Вас не получается, приведите код, который Вы писали, чтобы побороть проблему, думайте, одним словом, никто не будет за Вас писать скрипт.
Алексей С.:
что значит в цикле не работает?
а как работает?
Moroz: Привожу код

Ну расскажите, что Вы пробовали, что у Вас не получается, приведите код, который Вы писали, чтобы побороть проблему, думайте, одним словом, никто не будет за Вас писать скрипт.

Привожу код (Загружаю страницу-> в массив->вырезаю ссылку, вывожу и одновременно добавляю в базу, приведено 2-ва варианта, нужен 2-ой, как правильно добавить в бд):

$conn = db_connect();
$str = implode("",file("http://www.server.ru/link.html"));
preg_match_all("!<link>(.*?)<link>!si",$str,$ok);
for ($i=0; $i<count($ok[1]); $i++){
echo $ok[1][$i]."<br>";

// 1. "serialize" - мне не подходит:

$add = serialize($ok[1]);
$sql = "insert into test (text) values ('$add')";


// 2.
$sql = "insert into test (text) values ('$$ok[1][$i]')";

}
$result = mysql_query($sql, $conn);
Moroz: последняя версия кода
Вот последняя версия кода:


$str = implode("",file("http://www.server.ru/link.html"));
preg_match_all("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $str, $matches);

for ($i=0; $i< count($matches[0]); $i++) {
echo $matches[0][$i] . "<br>";
$sql = "INSERT INTO test (text) VALUES('$matches[0][$i]')";
$result = mysql_query($sql, $conn);
}

В БД добавляются значения:
Array[0]
Array[1]
Array[3] ...

В чем ошибка?
Алекс Светкин:
$sql = "INSERT INTO test (text) VALUES('$matches[0][$i]')";
Должно быть
$sql = "INSERT INTO test (text) VALUES('{$matches[0][$i]}')";
http://php.rinet.ru/manual/ru/language.types.string.php#language.types.string.syntax.double
Maus:
$sql = "INSERT INTO test (text) VALUES('$matches[0][$i]')";
Еще вариант ,потенциально проблемный:
$sql = "INSERT INTO test (text) VALUES('".implode("'), ('", $matches[0])."')";
Чтоб не делать кучу ненужных, имхо, запросов

Эта тема на forum.dklab.ru