Доступ к передаче доступа - PullRequest
0 голосов
/ 22 марта 2011

Я задал пару вопросов здесь в спешке, и я никуда не спешу, я все время меняю вещи и просто сталкиваюсь с другой проблемой, и не ближе к пониманию того, что ее вызывает.Я - человек, работающий с PHP MYSQL, и мне приходится работать с Access через класс COM.

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

Я пришел к выводу данных в массив, их сериализации и сохранению в файл на главном сервере (который должен синхронизироваться).к) и затем на других серверах, загружая файл, десериализуя его и элемент за элементом, проверяя, находится ли он в БД, и если не вставляет его.Вставка не работает.Я попытался создать SQL-запрос для каждого элемента и делать $ this-> conn-> Execute ();и это терпит неудачу построчно на глупых вещах, поэтому я сейчас пытаюсь это:

function syncCMS()
    {
       $this->output['msg'] .= "<p><b>The following properties were added to the database on ." . $this->hsite . "</b></p>";
       $this->get_field_names();
       $this->make_connection(); //assigns connection to $this->conn
        $rs = new COM('ADODB.Recordset');
        $rs->CursorType = 2;
        $rs->CursorLocation = 1;
        $rs->LockType = 4;
        $rs->Open($this->table_name,$this->conn);
        foreach ($this->awayPropertyDetails as $key => $property)
        {
            $this->check_for_property($property['pname']);
            if (!$this->property_exists || $this->mode == "fullSync")
            {
               unset($values);
               $bfields = array("pshow","rent","best", "oda1",  "oda2", "oda3", "oda4", "oda5", "oda6", "odap", "topool","tomountain","tofitness","tosauna"); //stores the yes/no values
               $q = "INSERT INTO " . $this->table_name . " (" . $this->dbfields . ") VALUES (";
                foreach ($property as $k => $value)
                {

                    if ($k == "Kimlik") {
                        $value = null;
                    }
                    if ($k == "tarih")
                    {
                        $value = date("d/m/Y");
                        $value = "'" . $value . "'";
                    }
        if (in_array($k,$bfields))
                {
                   if ($value == "")
                   {
                       $value = 'FALSE';
                   }
                   else 
                   {
                       $value = 'TRUE';
                   }
                }
                     $rs->fields->$k = $value;
$this->output['msg'] .= $property['pname'] . " added";
                }

        $rs->BatchUpdate();
                $rs->Close();
                $this->conn->Close();
               //$this->download_images($property['OBJECT_NR'],$k);
                //$this->output['msg'] .= "<p>Images added</p>";

            }


       }
$message .= "</ul>";
$this->output['msg'] .= $message;
        $this->sendOutput();
        //print_r($property);*/
    }

И получаю это:

Неустранимая ошибка: необнаруженное исключение 'com_exception' с сообщением 'Невозможнопоиск `Кимлик ': неизвестное имя.'в D: \ inetpub ...

Kimlik - это имя первого поля, поле Auto Number, я вынул его, и проблема переместилась на второе поле.

1 Ответ

0 голосов
/ 03 апреля 2011

Я получил с:

$sql = "SELECT * FROM " . $this->table_name;
if (!$this->property_exists || $this->mode == "fullSync")
            {
               $this->make_connection();
               $rs->Open($sql,$this->conn);
              $rs->addnew();
               foreach($rs->Fields as $field)
               {
                   if ($field->name != "Kimlik")
                   {
                   $rs->Fields[$field->name] = $property[$field->name];
                   }
               }

              $rs->Update();
              $rs->Close();
              $this->conn->Close();

               $msg = $this->download_images($property['OBJECT_NR'],$k);
               $this->output['msg'] .= $property['pname'] . " added<br/>" . $msg . "<br/><br/>";

            }
...