Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Firebird程序不仅仅在PDO中执行_Php_Stored Procedures_Pdo_Firebird - Fatal编程技术网

Php Firebird程序不仅仅在PDO中执行

Php Firebird程序不仅仅在PDO中执行,php,stored-procedures,pdo,firebird,Php,Stored Procedures,Pdo,Firebird,我有一个Firebird程序: CREATE OR ALTER procedure INSERT_LABELS_SET ( IN_NAME varchar(50)) returns ( OUT_ID smallint) as begin IF ((SELECT COUNT(*) FROM labels_sets WHERE name=:in_name) = 0) THEN INSERT INTO labels_sets(name) VALUES (:in_name

我有一个Firebird程序:

CREATE OR ALTER procedure INSERT_LABELS_SET (
    IN_NAME varchar(50))
returns (
    OUT_ID smallint)
as
begin
    IF ((SELECT COUNT(*) FROM labels_sets WHERE name=:in_name) = 0) THEN
    INSERT INTO labels_sets(name) VALUES (:in_name) RETURNING id into :out_id;
suspend;
end
当我尝试用PHP执行它时:

/**
 * @var $stmt PDOStatement
 */
$stmt = $this->db->prepare('EXECUTE PROCEDURE insert_labels_set(?);');
$stmt->execute(array($value));
我得到一个错误:

SQLSTATE[HY000]:一般错误:-804动态SQL错误SQL错误代码 =-804 SQLDA结构中的值不正确

我如何修复错误

这种问题只存在于PDO中。当我使用ibase_connect()时,一切都能正常工作。

解决方案:

$stmt = $this->db->prepare('SELECT OUT_ID from insert_labels_set(?);');
$stmt->execute(array($value));

但是为什么以前的版本不起作用,我不明白,

从未使用过firebird,但是
begin
块中的参数变量不应该是
@in\u name
@out\u id
吗?这有帮助吗?这没用。只有在我使用PDO时才会发生这种错误。在执行之前您是否绑定了参数$stmt->bindParam(1,'label',PDO::PARAM_STR);是的,我试过了。不起作用