#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'])
, и вы, вероятно, не получите ошибку.