Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: сети
Войти
Регистрация
Восстановить пароль
 
vladimirnbd
0 / 0 / 0
Регистрация: 30.12.2013
Сообщений: 18
1

Pdo и получение результата

05.07.2018, 16:31. Просмотров 230. Ответов 12
Метки нет (Все метки)

приветствую форумчане! надеюсь на Вашу помощь!
знакомлюсь с pdo, навалял скриптик и не могу заставить работать
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
                $fio = $_POST['FIO'];
                $podrazdelenie = $_POST['Podrazdelenie'];
$sth = $dbh->prepare('SELECT dateExe
    FROM Osnovnaya
    WHERE FIO = ? AND Podrazdelenie = ?');
$sth->bindValue(':FIO', $fio, PDO::PARAM_STR);
$sth->bindValue(':Podrazdelenie', $podrazdelenie, PDO::PARAM_STR);
$sth->execute();
 
if(rowCount($sth)!=0){
    while ($row= $sth->fetch(PDO::FETCH_LAZY)) {
    
 
        if ($row[6] != 0 and $row[7]!='0000-00-00'){
            echo "Ваша заявка готова!" . "</br></br>";}
        elseif ($row[6] != 0 and $row[7] == '0000-00-00') {
            echo "Ваша заявка в обработке!" . "</br></br>";}
        elseif ($row[6] != 1) {
            echo "Требуется подпись МО!" . "</br></br>";}
        }
    }
 
    else {
        echo "Заявки с указанными данными не поступало!" . "</br></br>";
    }
при выполнении вылазят 3 ошибки:
1) SQLSTATE[HY093]: Invalid parameter number: parameter was not defined в строке с
PHP
1
$sth->execute();
и
2)Call to undefined function rowCount() в строке с
PHP
1
if(rowCount($sth)!=0)
и

3)Stack trace: #0 {main} thrown в строке с
PHP
1
if(rowCount($sth)!=0)
очень рассчитываю на вашу помощь !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2018, 16:31
Ответы с готовыми решениями:

Как сконфигурировать PDO?
Добрый день, Поставил на debian apache + php + postgres (lapp) Хочу...

Пытаюсь разобраться с pdo
if(isset($_POST)) { if (isset($_POST) &amp;&amp; isset($_POST)) { ...

MySqli или PDO ?
Что выбрать?

PHP PDO проверка на существование записи
Help me, plz! 😓 Again. Добавляю в базу записи. Значения полей должны быть...

Php + PDO+ ajax + smarty + denwer = error
Только начинаю разбирать Ajax, поэтому для многих проблема окажется вполне...

12
Jewbacabra
Эксперт PHP
3433 / 2857 / 1285
Регистрация: 24.04.2014
Сообщений: 8,669
05.07.2018, 16:39 2
Цитата Сообщение от vladimirnbd Посмотреть сообщение
$sth = $dbh->prepare('SELECT dateExe FROM Osnovnaya WHERE FIO = ? AND Podrazdelenie = ?'); $sth->bindValue(':FIO', $fio, PDO::PARAM_STR); $sth->bindValue(':Podrazdelenie', $podrazdelenie, PDO::PARAM_STR);
Что такое :Podrazdelenie, и :FIO?
Цитата Сообщение от vladimirnbd Посмотреть сообщение
if(rowCount($sth)!=0)
Что за функция rowCount?
0
vladimirnbd
0 / 0 / 0
Регистрация: 30.12.2013
Сообщений: 18
05.07.2018, 16:43  [ТС] 3
:Podrazdelenie, и :FIO это разве не параметры для переменных одноименных?


rowCount нашел тут
http://php.net/manual/ru/pdostatement.rowcount.php
как аналог mysqli_num_rows
0
Jewbacabra
Эксперт PHP
3433 / 2857 / 1285
Регистрация: 24.04.2014
Сообщений: 8,669
05.07.2018, 16:46 4
Цитата Сообщение от vladimirnbd Посмотреть сообщение
:Podrazdelenie, и :FIO это разве не параметры для переменных одноименных?
Не надо гадать, в документации написано что это такое.
Цитата Сообщение от vladimirnbd Посмотреть сообщение
Это не функция rowCount, а метод класса PDOStatement. И вызываться должен как метод. Дальше же есть примеры использования.
0
sash23
145 / 129 / 100
Регистрация: 31.05.2016
Сообщений: 356
05.07.2018, 16:54 5
вместо знака ? в запросе пишите идентификаторы т.е :FIO и :Podrazdelenie
0
vladimirnbd
0 / 0 / 0
Регистрация: 30.12.2013
Сообщений: 18
05.07.2018, 16:54  [ТС] 6
тоже нашел , исправил.
0
sash23
145 / 129 / 100
Регистрация: 31.05.2016
Сообщений: 356
05.07.2018, 17:06 7
функции rowCount не существует. есть метод rowCount но его нужно использовать только для запросов изменяющих данные например INSERT.
Поэтому просто уберите if оставьте только while
0
vladimirnbd
0 / 0 / 0
Регистрация: 30.12.2013
Сообщений: 18
05.07.2018, 17:48  [ТС] 8
да , это тоже увидел щас вот. сделал так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
                $fio = $_POST['FIO'];
                $podrazdelenie = $_POST['Podrazdelenie'];
$sth = $dbh->prepare('SELECT dateExe
    FROM Osnovnaya
    WHERE FIO = :FIO AND Podrazdelenie = :Podrazdelenie');
$sth->bindValue(':FIO', $fio, PDO::PARAM_STR);
$sth->bindValue(':Podrazdelenie', $podrazdelenie, PDO::PARAM_STR);
$sth->execute();
 
if($sth->fetchColumn()!=0){
    while ($row= $sth->fetch) {
    
        if ($row[6] != 0 and $row[7]!='0000-00-00'){
            echo "Ваша заявка готова!" . "</br></br>";}
        elseif ($row[6] != 0 and $row[7] == '0000-00-00') {
            echo "Ваша заявка в обработке!" . "</br></br>";}
        elseif ($row[6] != 1) {
            echo "Требуется подпись МО!" . "</br></br>";}
        }
    }
 
    else {
        echo "Заявки с указанными данными не поступало!" . "</br></br>";
    }
ошибок нет, но результат получается "Заявки с указанными данными не поступало!"
а должно быть "Ваша заявка готова!"
видимо не отрабатывается if почему то?

Добавлено через 37 минут
исправил
PHP
1
while ($row= $sth->fetch(PDO::FETCH_LAZY))
но я правильно понимаю, что не выполняется сам запрос ? вводимые переменные выводятся
0
sash23
145 / 129 / 100
Регистрация: 31.05.2016
Сообщений: 356
05.07.2018, 17:56 9
убери if чтобы прверить выполняется запрос или нет
0
Виталюска
472 / 461 / 228
Регистрация: 26.09.2010
Сообщений: 2,356
05.07.2018, 18:58 10
vladimirnbd, fetchColumn() возвращает значение одного столбца следующей строки результирующего набора или FALSE, если больше нет строк.

Строка не может быть равна числу.
0
otto-fukin
22 / 58 / 21
Регистрация: 15.06.2017
Сообщений: 553
12.07.2018, 20:36 11
Цитата Сообщение от vladimirnbd Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
if($sth->fetchColumn()!=0){
* * while ($row= $sth->fetch) {
if ($row[6] != 0 and $row[7]!='0000-00-00'){
* * * * * * echo "Ваша заявка готова!" . "</br></br>";}
* * * * elseif ($row[6] != 0 and $row[7] == '0000-00-00') {
* * * * * * echo "Ваша заявка в обработке!" . "</br></br>";}
* * * * elseif ($row[6] != 1) {
* * * * * * echo "Требуется подпись МО!" . "</br></br>";}
* * * * }
* * }
else {
* * * * echo "Заявки с указанными данными не поступало!" . "</br></br>";
* * }
else внизу вообще к какому блоку относится? посчитай количество открывающих и закрывающих фигурных скобок
Цитата Сообщение от Виталюска Посмотреть сообщение
Строка не может быть равна числу
в php запросто может быть равна
0
Виталюска
472 / 461 / 228
Регистрация: 26.09.2010
Сообщений: 2,356
20.07.2018, 23:41 12
Цитата Сообщение от otto-fukin Посмотреть сообщение
в php запросто может быть равна
это когда???
0
Para bellum
Эксперт PHP
4103 / 3051 / 985
Регистрация: 06.01.2011
Сообщений: 8,931
22.07.2018, 11:57 13
Цитата Сообщение от Виталюска Посмотреть сообщение
это когда?
otto-fukin об этом говорил:
PHP
1
2
# Сравнение string и integer
var_dump("2" == 2); // true
0
22.07.2018, 11:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2018, 11:57

Как правильно сформировать запрос mysql в pdo?
Здравствуйте, У меня есть два вопроса: Как правильно сформировать массив...

Получение одним запросом данные из двух разных таблиц PDO
Как объединить два запроса, чтобы выводились все записи из table1 с возможность...

Получение результата функции
Проблема решена


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru