SQLSRV Фатальная ошибка: серьезная ошибка при переводе Юникода

1

Я пытаюсь запустить базовый цикл while в PHP для базы данных SQL Sever. Я возвращаю следующую ошибку:

Fatal error: Severe error translating Unicode

Код работает с другим скриптом, поэтому я думаю, что это что-то связано с таблицей, которую я запрашиваю. Это код, который я использую

if(isset($_GET['uid']) && $_GET['uid'] != ''){
$uid = $_GET['uid'];
// check for user
$staffSQL = "SELECT * FROM staff WHERE userid = '".$uid."'";
$params = array();
$staff = sqlsrv_query( $conn, $staffSQL, $params, array("Scrollable"=>"buffered"));

$numStaff = sqlsrv_num_rows($staff);

if($numStaff  < 1){
    $response["error"] = TRUE;
    $response["error_msg"] = "No projects found!";
}else{
    while( $row = sqlsrv_fetch_array( $staff, SQLSRV_FETCH_ASSOC) ) {
        foreach($row as $key => $value) {
            echo "$key = $value <br />";
        }
    }
}

После некоторого Googling я нашел эту ссылку, но в предлагаемом коде нет ничего, кроме непонятного.

Теги:
sql-server
while-loop
unicode

1 ответ

0
Лучший ответ

Итак, после того, как еще несколько Googling я нашел эту страницу, в которой говорится, что решение добавляет параметр CharacterSet в функцию sqlsrv_connect.

$result = sqlsrv_connect($hostname, array(
    'UID' => $username,
    'PWD' => $password,
    'Database' => $database,
    'ConnectionPooling' => ($pooling) ? 1 : 0,
    "CharacterSet" => "UTF-8"       // <---- voila
));

Я тестировал это, и он отлично работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню