хранимая процедура php pdo с mariadb - что-то не так - PullRequest
0 голосов
/ 26 октября 2019

Полный отказ от ответственности Я никогда раньше не баловался с хранимыми процедурами, но довольно компетентен в регулярных запросах. Я не получаю результатов от этого теста хранимой процедуры, который я создал, и я знаю, что есть результаты, поскольку я могу получить их из «нормального» запроса. Что я делаю не так с этим?

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:

<code>$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 "
";

Результаты:

Array
(
    [0] => Array
        (
            [cats1] => 
            [cats2] => 
        )

)

Также естьТребуется определить VARCHAR (xxx) для строк в хранимой процедуре? В моем обычном запросе, поскольку эта строка предоставляется php, определенной длины нет, и я хотел бы оставить ее такой же.

1 Ответ

1 голос
/ 26 октября 2019

@one для переменной сеанса mysql. который имеет свои применения.

Что вам нужно сделать, это

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 ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...