Я пытаюсь запустить базовый цикл 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 я нашел эту ссылку, но в предлагаемом коде нет ничего, кроме непонятного.
Итак, после того, как еще несколько Googling я нашел эту страницу, в которой говорится, что решение добавляет параметр CharacterSet в функцию sqlsrv_connect.
$result = sqlsrv_connect($hostname, array(
'UID' => $username,
'PWD' => $password,
'Database' => $database,
'ConnectionPooling' => ($pooling) ? 1 : 0,
"CharacterSet" => "UTF-8" // <---- voila
));
Я тестировал это, и он отлично работает.