PHP PDO — вставка выполнена, но возвращена ошибка

#php #stored-procedures #pdo #sqlsrv

#php #хранимые процедуры #pdo #sqlsrv

Вопрос:

Я использую PHP PDO с MS SQL server с помощью sqlsrv драйвера. Я запускаю процедуру, которая должна вставить некоторые данные, и я вижу, что вставка выполняется по мере ее ввода в базу данных. Но я все равно получаю сообщение об ошибке в ответ, ошибка гласит

 Array ( [0] => 42000 [1] => 8114 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Error converting data type nvarchar to int. ) 
  

Это часть хранимой процедуры

определение хранимой процедуры

и вот соответствующий фрагмент кода

 $stmt = $dbh->prepare("UsersManagement.spUsersInsert :InsertUser, :UserName, :FirstName");

$stmt->bindParam('InsertUser', $_SESSION['user_id'], PDO::PARAM_INT);
$stmt->bindParam('UserName', $_POST['username']);
$stmt->bindParam('FirstName', $_POST['first_name']);

if ($stmt->execute()) {
      echo 'OK';
} else {
      print_r($stmt->errorInfo());
}
  

Вы можете видеть, что я явно указал PDO::PARAM_INT , где требуется целое число, так в чем же может быть ошибка?

Комментарии:

1. проверьте, что находится в $_SESSION[‘user_id’] .

2. Ошибка — это то, что вы ввели в вопросе. Более интересным является то, что вставка выполняется даже с ошибкой. К сожалению, я не могу сказать, почему он вставляется, просто я могу сказать, попробуйте intval($_SESSION['user_id']) , и вы, вероятно, не получите ошибку.