Вы можете использовать именованные заполнители (: name) или заполнители вопросительного знака (?) С 1-индексированной позицией параметра в bindParam()
.
В вашем случае вы можете попробовать удалить параметр длины в вызове bindParam()
, если ваши параметры только для ввода.
$stmt = $DB->prepare("CALL dbo.HisIsTheProcedureName(?,?,?)");
$val01 = $_POST['Val01'];
$val02 = $_POST['Val02'];
$val03 = $_POST['Val03'];
$stmt->bindParam(1, $val01, PDO::PARAM_STR);
$stmt->bindParam(2, $val02, PDO::PARAM_STR);
$stmt->bindParam(3, $val03, PDO::PARAM_STR);
$stmt->execute();
Если у вас есть выходные параметры, то в соответствии с документацией, используйте это:
$val01 = $_POST['Val01'];
$val02 = $_POST['Val02'];
$val03 = $_POST['Val03'];
$stmt = $DB->prepare("CALL dbo.HisIsTheProcedureName(?,?,?)");
$stmt->bindParam(1, $val01, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 8000);
$stmt->bindParam(2, $val02, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 8000);
$stmt->bindParam(3, $val03, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 8000);
$stmt->execute();