Как при загрузке массива в MySQL для каждой новой строки подставить GUID?

<?php
	include 'config.php';	// Подключение конфигурации.
	include 'connect.php';	// Подключение к БД.

	$xmlURL = 'w0066920161214.xml';			// Адрес YML-файла
	$sxml = simplexml_load_file($xmlURL);	// Интерпретирует XML-файл в объект

	$RightLvl = $sxml->NUM; // Получаем номер
	// echo $RightLvl; 		// Выводим номер
	// include 'GUID.php';

	foreach ($sxml->PricesServices->Doc->Service as $Service) {
        // Код категории.
        $CategCode = $Service->Sect;
        // Название категории.
        $CategName = $Service->SName;
        // Код блюда.
        $MenuCode = $Service->Code;
        // Название блюда.
        $MenuName = $Service->Name;
        // Цена блюда.
        $MenuPrice = $Service->RetPrice;

     
    	// Проверяем создана ли категория.
    	$sql = "SELECT `Code` FROM `categlist` WHERE `Code`='$CategCode'";
    	$check = mysqli_query($open_connect, $sql);
    	if ($check) {
    		if (!mysqli_num_rows($check) > 0) {
    			$sql = "INSERT INTO `categlist` (
    			`id`, 
    			`MainParentIdent`, 
    			`Code`, 
    			`ExtCode`, 
    			`Name`, 
    			`AltName`, 
    			`Status`, 
    			`RightLvl`) 
    			VALUES (
    			NULL,
    			'0', 
    			'$CategCode', 
    			'$CategCode', 
    			'$CategName', 
    			'', 
    			'rsActive', 
    			'$RightLvl');";
				$insert = mysqli_query($open_connect, $sql);
				if (!$insert) {
					echo "Ошибка заполнения таблицы CATEGLIST.";
				}
				
    		}
    	}

		// Проверяем создана ли позиция.
    	$sql ="SELECT `id` FROM `categlist` WHERE `Code`='$CategCode'";
    	$result = mysqli_query($open_connect, $sql);
    	$row = mysqli_fetch_array($result);
    	$MainParentIdent = $row['id'];


    	$sql = "SELECT `Code` FROM `menu` WHERE `Code`='$MenuCode'";
    	$check = mysqli_query($open_connect, $sql);
    	if ($check) {
    		if (!mysqli_num_rows($check) > 0) {
    			include_once 'GUID.php';
    			$sql = "INSERT INTO `menu` (
    			`id`, 
    			`GUIDString`, 
    			`MainParentIdent`, 
    			`Code`, 
    			`ExtCode`, 
    			`Name`,
    			`PRICETYPES-3`, 
    			`Status`, 
    			`TaxDishType`, 
    			`RightLvl`, 
    			`CLASSIFICATORGROUPS-2560`,
    			`CLASSIFICATORGROUPS-512`) 
    			VALUES (
    			NULL, 
    			'', 
    			'$MainParentIdent', 
    			'$MenuCode', 
    			'$MenuCode', 
    			'$MenuName', 
    			'$MenuPrice', 
    			'rsActive', 
    			'3', 
    			'', 
    			'2561', 
    			'513')";
    			$insert = mysqli_query($open_connect, $sql);
				if (!$insert) {
				echo "Ошибка заполнения таблицы Меню.";
				}
    		}
    	}

	}
?>


<?php
function getGUID(){
    if (function_exists('com_create_guid')){
        return com_create_guid();
    }else{
        mt_srand((double)microtime()*10000);
        $charid = strtoupper(md5(uniqid(rand(), true)));
        $hyphen = chr(45);// "-"
        $uuid = chr(123)// "{"
            .substr($charid, 0, 8).$hyphen
            .substr($charid, 8, 4).$hyphen
            .substr($charid,12, 4).$hyphen
            .substr($charid,16, 4).$hyphen
            .substr($charid,20,12)
            .chr(125);// "}"
        return $uuid;
    }
}
unset($GUID);
$GUID = getGUID();
// echo $GUID;
?>
  • Вопрос задан
  • 262 просмотра
Пригласить эксперта
Ответы на вопрос 1
akzhan
@akzhan
Проверку на существование можно выполнять как

$sql = "SELECT COUNT(*) FROM `categlist` WHERE `Code`=?"; # use bind!


Далее проверять, что равно 0.

Вставку переделать а ля

set @id=UUID();
insert into categlist(id, <col2>) values (@id, 'another value');
select @id;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы