Здравствуйте, есть скрипт который должен из файла CSV переносить данные в БД, перенос работает, но нужно сделать что бы уже существующие в бд записи просто перезаписывались, если такой ид уже существует в бд. Ниже часть скрипта.
$connection=mysql_connect (HOST, USER, PASS);
$db1 = mysql_select_db (DB, $connection); //подкл к имеющейся бд
// $del="DELETE FROM pudra";
// $result=mysql_query ($del);//удаление из БД
mysql_query("set names utf8");
$query = "SELECT id FROM `pudra`";
$res = mysql_query($query);
while($row = mysql_fetch_array($res)){
echo "id:".$row['id']."<br>\n";
};
foreach ($get_csv as $value) { //Проходим по строкам файла CSV
$available = $value[0];
$categoryId = $value [1];
$currencyId = $value[2];
$delivery = $value[3];
$description = $value[4];
$id = $value[5];
$model = $value[6];
$modified_time = $value[7];
$name = $value[8];
$param = $value[9];
$pickup = $value[10];
$picture = $value[11];
$price = $value[12];
$store = $value[13];
$type = $value[14];
$typePrefix = $value[15];
$url = $value[16];
$vendor = $value[17];
$in_sitemap = 0;
if (in_array($id, $row, true)) {
echo "Перезаписал id: ".$id."<br>";
$update = "UPDATE users SET available = '$available', categoryId = '$categoryId', currencyId = '$currencyId', delivery = '$delivery', description = '$description', model = '$model', modified_time = '$modified_time', name = '$name', param = '$param', pickup = '$pickup', picture = '$picture', price = '$price', store = '$store', type = '$type', typePrefix = '$typePrefix', url = '$url', vendor = '$vendor', in_sitemap = '$in_sitemap' WHERE id = '$id'";
} else{
echo "Записал id: ".$id."<br>";
$query="insert into pudra values('$available','$categoryId', '$currencyId', '$delivery', '$description', '$id', '$model', '$modified_time ', '$name', '$param', '$pickup', '$picture', '$price', '$store', '$type', '$typePrefix', '$url', '$vendor', '$in_sitemap')";
$result=mysql_query($query); //добавл данных
$namesites = "http://sanerix.tk";
$link = $namesites."/?id=".$id."\r\n";
$fp = fopen("sitemap.txt", "a"); // Открываем файл в режиме записи
$test = fwrite($fp, $link); // Запись в файл
};
};
if($result) echo "Обновление успешно завершено,<br>";
else echo"Ошибка при обновлении!<br>";
fclose($fp); //Закрытие файла
if ($test) echo 'Данные в карту сайта успешно занесены.';
else echo 'Ошибка при записи в карту сайта!';
}
Проверка реализована на
in_array($id, $row, true)
но массив while не отдаёт!
Как можно получить массив полностью?