php mysqli код для добавления более 100 контактов мой код показывает ошибку - PullRequest
0 голосов
/ 18 января 2019

Если я добавлю 50 контактов к своему коду, он будет работать, но всякий раз, когда я добавляю более 100 контактов, будет отображаться ошибка.

вот мой код:

function CreateContactList($UserNumber,$query){

        $conn = $this->connect_db();
        if(!empty($query)){
        mysqli_query($conn,"DELETE FROM contactlist WHERE `UserNumber`='".$UserNumber."'");

        $querys = "INSERT INTO contactlist (`UserId`, `UserNumber`, `ContactNumber`, `ContactName`) VALUE ".$query;
        $querys1 = substr($querys, 0, -1);
        }
            if(mysqli_query($conn, $querys1)){
                $last_id = mysqli_insert_id($conn);
                    $result['msg'] = 'success';
            }else{
                $result['msg'] = 'error';
            }
        return $result;
    }

........................................

case "CreateContactList":
        $model = new Model();
        $data = $_REQUEST;
        $UserNumber = $_REQUEST['UserNumber'];
        $UserId = '1';
        unset($data['UserNumber'],$data['UserId'],$data['action']);
        $query = '';
        foreach ($data as $key => $value) {
            //$insertdata[] = array('ContactName' => $key,'ContactNumber' => $value,'UserNumber' => $UserNumber,'UserId' => $UserId );
            $query .= "('".$UserId."','".$UserNumber."','".FilterPhone($key)."','".$value."'),";
        }
        //print_r($query);
        $return = $model->CreateContactList($UserNumber,$query);
        error_log(date('d-m-Y h:i A').'_response_'.print_r($return, TRUE) , 3, $log_file);
        $return = FilterArray($return);
        print_r(JsonReturn($return));
    break;

Пожалуйста, скажите мне, где я делаю неправильно в коде.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Лучше использовать пакетную вставку вместо выполнения запроса вставки один за другим

Ниже приведен SQL-запрос, но вы можете легко сопоставить его с PHP

INSERT INTO contactlist (`UserId`, `UserNumber`, `ContactNumber`, `ContactName`)  
           VALUES(1, '0001111111', '000111111', 'Name 1'), 
    (2, '0002222', '0002222', 'Name 2'), 
    (3, '0003333', '00033333', 'Name 3')
0 голосов
/ 18 января 2019

Похоже, у вас могут возникнуть проблемы с обработкой строк в PHP, что на самом деле является проблемой алгоритма, а не языка. По сути, при работе с большими строками вы хотите минимизировать ненужное копирование. Прежде всего, это означает, что вы хотите избежать объединения. Самый быстрый и наиболее эффективный способ памяти для создания большой строки, например, для вставки сотен строк в одну, состоит в использовании функции implode () и присвоения массива.

    $query = [];
    foreach ($data as $key => $value) {
       $query[] = "('".$UserId."','".$UserNumber."','".FilterPhone($key)."','".$value."'),";
    }
    $return = $model->CreateContactList($UserNumber,$query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...