Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле. / 9 сообщений из 9, страница 1 из 1
06.09.2019, 11:34
    #39858331
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле.
Добрый день. Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле.

Есть примерно такой INSERT :
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
$tsql = "INSERT INTO [table]
      (
         [data1],
        [data2]
      )  
      VALUES   
      (?, ?)";  
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC ) ) 
{
      $tparams = [
          $row['tdata1'],
          $row['tdata2']->format( 'Y-d-m H:i:s' )
     ];

    $tstmt = sqlsrv_prepare($conn, $tsql, $tparams);
    sqlsrv_execute($tstmt); 
    sqlsrv_free_stmt($tstmt);  
}



В этом примере запись идет в цикле.
Можно ли как то сделать присваивание параметров в цикле, а sqlsrv_execute вне цикла.

Например в mysql это выглядело бы так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
$tsql = "INSERT INTO `table`
      (
         `data1`,
        `data2`
      )  
      VALUES   
      (?, ?)";  

$stmt = $mysqli->prepare($tsql)

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC ) ) 
{
        $tparams = [
            $row['tdata1'],
            $row['tdata2']->format( 'Y-d-m H:i:s' )
        ];

       $stmt->bind_param("ss",  $tparams);
}
 
$stmt->execute();


То есть, чтобы был только один sql запрос.
...
Рейтинг: 0 / 0
06.09.2019, 11:55
    #39858345
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле.
Hopfen_Artur,
скорее всего Вам нужно задать вопрос здесь
...
Рейтинг: 0 / 0
06.09.2019, 11:55
    #39858346
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле.
iiyama,

за дублирование темы тут не банят?)
...
Рейтинг: 0 / 0
06.09.2019, 11:56
    #39858347
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле.
Модератор: Вы из какого-то скриптового языка пытаетесь писать в MySql и задаете вопрос на форуме по MSSQL? А почему не на форуме молодых домохозяек?
...
Рейтинг: 0 / 0
06.09.2019, 11:58
    #39858351
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле.
Гавриленко Сергей Алексеевич,

ну просто у них официальная документация на сайте
https://docs.microsoft.com/en-us/sql/connect/php/sqlsrv-prepare?view=sql-server-2017

думал можно тут.
...
Рейтинг: 0 / 0
06.09.2019, 12:00
    #39858352
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле.
а mysql это для примера, запись нужна в mssql
...
Рейтинг: 0 / 0
06.09.2019, 12:05
    #39858355
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле.
Hopfen_Arturа mysql это для примера, запись нужна в mssqlДа какая разница куда если вопрос про откуда? Сервер сам себе запросы не посылает и не организовывает их генерацию и привязку к клиентским параметрам. Ищите как в используемом вами средстве разработки организована работа с передачей параметров в запросы. Это все на клиентской стороне, сервер тут вообще не при делах.
...
Рейтинг: 0 / 0
06.09.2019, 12:35
    #39858367
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле.
Sergey Sizov, ну человек просто интересуется как bulk'ом вставлять из PHP в ms sql...
...
Рейтинг: 0 / 0
06.09.2019, 18:04
    #39858592
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле.
sqlsrv_prepare подготавливает (что не удивительно) запрос, а не исполняет. Исполнением занимается например sqlsrv_execute и без цикла вы можете только делать так:

VALUES (?, ?), (?, ?), (?, ?), (?, ?), (?, ?), (?, ?), (?, ?), (?, ?), (?, ?), (?, ?), (?, ?), (?, ?), (?, ?), (?, ?), (?, ?)...............

и в sqlsrv_prepare передавать все ваши значения
иначе - цикл
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле. / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]