При использовании оператора вставки использование массива дает ошибку - PullRequest
0 голосов
/ 23 января 2019

Sqlserv php eoor при вставке с использованием массива опр1011 * Ошибка при подготовке / выполнении оператора. \ N "

Массив ([0] => Массив ([0] => 22018 [SQLSTATE] => 22018 [1] => 245 [код] =>245 [2] => [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server] Не удалось выполнить преобразование при преобразовании значения varchar »(757,« MAIN », 12,2018,100899,1250,« xyz », 0,100,45,1) «к типу данных int. [Message] => [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server] Преобразование не выполнено при преобразовании значения varchar» (757, «MAIN», 12,2018,100899, 1250, 'xyz', 0,100,45,1) 'к типу данных int.))

1 Ответ

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

Каждый элемент массива $params просто создается как строка ...

 $params []="({$rs->hd},'{$rs->dvn}',{$rs->mth},{$rs->yr},{$rs->stid},{$rs->prcd},'{$rs->prnm}',{$rs->prte},{$rs->ssl},{$rs->clsk},1)";

Вы, вероятно, хотели создать это как массив ...

 $params []=[$rs->hd,$rs->dvn,$rs->mth,$rs->yr,$rs->stid,$rs->prcd,$rs->prnm,$rs->prte,$rs->ssl,$rs->clsk,1];

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

$SqlInsert="insert into  SQl_test (Ss_Hq_cd,Ss_division,Ss_month,Ss_yr,Ss_stk_Id,Ss_prod_cod,Ss_prod_name,ss_prod_rate,Ss_Sale,Ss_Cl_stk,ss_tran_stat) values(?,?,?,?,?,?,?,?,?,?,?) ";

foreach ( $params as $param ) {
    $stmt = sqlsrv_query( $conn, $SqlInsert,$param);
}

С mysqli - вы также подготовили бы INSERT перед циклом и просто выполнили его скаждая строка данных в цикле, вероятно, есть что-то подобное в SQL Server, но не моя область знаний.

...