Я пытаюсь вставить HTML-код с китайскими символами в SQL Server с помощью функции php sqlsrv_prepare, но по неизвестной причине это не работает.
Это мой код:
$sqlInsertMail = "INSERT INTO EnvioCorreo2Temp (CorreoRemitente,CorreoDestinatario,ContenidoID,ContenidoMail,
AsuntoMail,CCOMail,Link,Orden,CuentaID,EnviadorCorreoID,TestigoID,Prioridad,EstatusID,FUA,Activo,Fecha_Lanzamiento)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmtDest = sqlsrv_query($conn, $dest_query);
if($stmtDest){ //This condition is for another query executed before for this "IF" clause
$cont = 0;
while($row = sqlsrv_fetch_array($stmtDest,SQLSRV_FETCH_ASSOC) ) {
$param1 = 'emailaccount@email.com'; $param2 = $row['email']; $param3 = 0; $param4 = $cuerpoMail; $param5 = $companyName;
$param6 = 'emailaccount@email.com'; $param7 = $enclnk; $param8 = 1; $param9 = $CuentaCorreoID['CuentaCorreoID'];
$param10 = 1; $param11 = 0; $param12 = mt_rand(1,1000); $param13 = 4; $param14 = $fdate2; $param15 = 1; $param16 = $date;
$params = array(&$param1, &$param2, &$param3, &$param4, &$param5, &$param6, &$param7, &$param8, &$param9, &$param10, &$param11, &$param12,
&$param13, &$param14, &$param15, &$param16);
try{
if($stmtPrepared = sqlsrv_prepare($conexion, $sqlInsertMail, $params)){
try{
sqlsrv_execute($stmtPrepared);
}catch (Exception $e) {
$bandera = false;
}
}
}catch (Exception $e) {
$bandera = false;
}
}
}else{
if( ($errors = sqlsrv_errors() ) != null) {
$bandera = false;
}
}
Этот код пытается вставить переменную с текстом, подобным этому:
如果您对本次调研有任何问题,请用以下邮箱联系我们:
Я пробовал следующее:
- Добавление N перед знаком вопросав параметре 4
- Добавление "CharacterSet" => "UTF-8" в параметрах соединения
- Добавление N '' в переменную следующим образом: $ mailText = 'N \' CHINESE TEXT\ '' и не работает
Но, в конце концов, я попытался использовать простое выполнение запроса к серверу sql:
$sqlInsert = "INSERT INTO cat_textocorreo (idTextos, idIdioma, textoCorreo) VALUES (4, 2000,N'".$mail."')";
$stmtCorreo = sqlsrv_query($conexion, $sqlInsert);
if($stmtCorreo){
echo "YES";
}else{
if( ($errors = sqlsrv_errors() ) != null) {
foreach( $errors as $error ) {
echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />";
echo "code: ".$error[ 'code']."<br />";
echo "message: ".$error[ 'message']."<br />";
}
}
}
И это невероятно работает.На самом деле я не понимаю, как это работает.Кто-нибудь из вас может мне помочь?
Примечание: поле моей базы данных находится в NVARCHAR
Мне нужно вставить эти китайские символы, потому что другая программа .NET прочитает этот текст для отправки электронного письма.И в моей базе данных сохраняются только такие символы: ¨å¯¹æœ¬æ¬¡è ° ƒç ”æœ ä ä» »ä½ • é — ®é ¢ ˜ï