невозможно правильно использовать результат запроса sql в php - PullRequest
0 голосов
/ 13 июля 2020

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

мой код:

        $sql2 = "SELECT COUNT(email)FROM subscribers WHERE id= ?";
        $stmt2 = $conn->prepare($sql2);
        $stmt2->bind_param("s", $id);
        $stmt2->execute();
        $callbacks = $stmt2->get_result();
        while($rows = $callbacks->fetch_assoc()){
            $results = $rows;
        }
        $stmt2->close();

        if ($results <2001){
            $email = trim($_POST["email"]);
        }else{
            $email_err = "This user has reached the limmit to what their plan can allow .";
        }

Проблема, с которой я столкнулся, заключается в том, что я не уверен, как на самом деле использовать количество строк.

В этой конфигурации мне все равно, какое количество результатов в любом случае просто отправляю их.

Если я сделаю что-то вроде этого id_err = $results;, чтобы увидеть результат запроса, он выдаст мне ошибку преобразования массива в строку. если вы считаете, что следует запрашивать строки напрямую и подсчитывать их с помощью PHP, пожалуйста, покажите мне, как.

Я также пробовал сделать некоторые варианты для $results = $rows['count'] с разными именами, такими как 'total' , и "результат", но они все еще публикуют. когда я пытаюсь увидеть результат запроса с помощью id_err = $results;, он полностью игнорирует его и все равно публикует.

, чтобы избежать путаницы в отношении того, что такое $ id_err, он останавливает отправку сценария, если он когда-либо используется .

и для пояснения этого запроса SQL находится в условном выражении.

заранее спасибо.

1 Ответ

2 голосов
/ 13 июля 2020

Функция count возвращает все записи в виде одной строки со счетчиком .. поэтому удалите while и сравните соответствующий индекс.

$sql2 = "SELECT COUNT(email) as the_count FROM subscribers WHERE id= ?";
$stmt2 = $conn->prepare($sql2);
$stmt2->bind_param("s", $id);
$stmt2->execute();
$callbacks = $stmt2->get_result();
$rows = $callbacks->fetch_assoc();
$stmt2->close();
if ($rows['the_count'] < 2001){
     $email = trim($_POST["email"]);
}else{
     $email_err = "This user has reached the limmit to what their plan can allow .";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...