【发布时间】:2019-10-25 23:25:48
【问题描述】:
完全免责声明我以前从未搞过存储过程,但对常规查询非常有能力。我没有从我创建的这个存储过程测试中得到任何结果,并且我知道有结果,因为我可以从“正常”查询中获得它们。我做错了什么?
CREATE PROCEDURE get_snet(
IN one VARCHAR(255),
IN two VARCHAR(255)
)
BEGIN
SELECT
IFNULL( (SELECT cats FROM results081219 WHERE url = @one LIMIT 1), '') AS cats1,
IFNULL( (SELECT cats FROM results081219 WHERE url = @two LIMIT 1), '') AS cats2;
END
$$
DELIMITER ;
php:
$parsed1 = 'google.com';
$parsed2 = 'gmail.com';
//stored procedure way
$stmt = $dbnet->prepare("
CALL get_snet(:parsed1, :parsed2);
");
$binding = array(
'parsed1' => $parsed1,
'parsed2' => $parsed2
);
$stmt->execute($binding);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<pre>";
print_r($results);
echo "</pre>";
结果:
Array
(
[0] => Array
(
[cats1] =>
[cats2] =>
)
)
另外,是否需要为存储过程中的字符串定义 VARCHAR(xxx)?在我的正常查询中,由于这个字符串是由 php 提供的,所以没有定义长度,我想保持不变。
【问题讨论】:
标签: php mysql stored-procedures