0
Я использую этот SP, я получаю оба результата при использовании workbench mysql.Ошибка параметра вывода PDO
CREATE PROCEDURE SP(IN _start INT,IN _end INT,INOUT _count INT)
BEGIN
SET _count = (SELECT COUNT(*) FROM tbl);
SET @qry = CONCAT('select * from tbl limit ', _start, ',', _end);
PREPARE stmt FROM @qry;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
Но при использовании с PDO возвращаю эту ошибку
$c=0;
$stmt = $this->_dbc->getConnection()->prepare("CALL SP(0,10,:count)");
$stmt->bindParam(":count",$c,PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT,0);
$stmt->execute();
return $c;
PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1414 OUT or INOUT argument 3 for routine db22.SP is not a variable or NEW pseudo-variable in BEFORE trigger
Но об изменении
$this->_dbc->getConnection()->prepare("CALL SP(0,10,**:count**)");
в
$this->_dbc->getConnection()->prepare("CALL SP(0,10,@count)");
я не возвращает ошибку, но всегда получаю счет равен 0.
- В чем разница между: count и @count?
- Как получить точное количество через pdo?
': count' является заполнителем в подготовленном заявлении, должны быть заполнены по какой-либо библиотеки/язык, который вы используете, чтобы разговаривать с базой данных. '@ count' - это серверная переменная на стороне базы данных. Если '@ count' ранее не был задан другим запросом, тогда он будет оценивать значение null. –
Но я следовал примеру из подготовленных инструкций php. они используют только заполнители для получения результата, возвращаемого с помощью курсора mysql. – DON