проверка отсутствия строк после вызова хранимой процедуры с использованием php pdo для базы данных mysql columnCount не работает - PullRequest
0 голосов
/ 19 октября 2019
    $sql = "CALL pr_cartItemsForCustomer (:customerId)";        
    $statement = $connection->prepare($sql);    
    $statement->bindValue(':customerId',$customerId);
    $statement->execute();

    if($statement->columnCount() > 0)

Это всегда возвращает 5 столбцов, даже если нет возвращаемых строк, как правильно проверить отсутствие строк? Я попробовал rowCount, но это не сработало.

Код работает нормально для запроса, но не при вызове хранимой процедуры, которая возвращает запрос.

1 Ответ

0 голосов
/ 19 октября 2019

Правильный способ узнать количество возвращаемых строк - использовать count() в возвращенном массиве PHP.

$sql = "CALL pr_cartItemsForCustomer (:customerId)";        
$statement = $connection->prepare($sql);    
$statement->bindValue(':customerId',$customerId);
$statement->execute();
$results = $statement->fetchAll();

echo count($results);

Однако обратите внимание, что ваш пример ненужно вообще. Если все, что вам нужно, это проверить наличие возвращаемых строк, тогда просто используйте сам массив в качестве логического значения. например, if($results) Подробнее на https://phpdelusions.net/pdo#count

$results = $statement->fetchAll();

if($results) {
    foreach($result as $row) {
        // ...
    }
} else {
    echo 'No records!';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...