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

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

05.07.2018, 16:31. Просмотров 183. Ответов 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 и получение результата (PHP Сети):

Как сконфигурировать 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, поэтому для многих проблема окажется вполне...

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

12
Jewbacabra
Эксперт PHP
3096 / 2683 / 1228
Регистрация: 24.04.2014
Сообщений: 8,211
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
3096 / 2683 / 1228
Регистрация: 24.04.2014
Сообщений: 8,211
05.07.2018, 16:46 #4
Цитата Сообщение от vladimirnbd Посмотреть сообщение
:Podrazdelenie, и :FIO это разве не параметры для переменных одноименных?
Не надо гадать, в документации написано что это такое.
Цитата Сообщение от vladimirnbd Посмотреть сообщение
Это не функция rowCount, а метод класса PDOStatement. И вызываться должен как метод. Дальше же есть примеры использования.
0
sash23
125 / 115 / 94
Регистрация: 31.05.2016
Сообщений: 324
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
125 / 115 / 94
Регистрация: 31.05.2016
Сообщений: 324
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
125 / 115 / 94
Регистрация: 31.05.2016
Сообщений: 324
05.07.2018, 17:56 #9
убери if чтобы прверить выполняется запрос или нет
0
Виталюска
463 / 455 / 225
Регистрация: 26.09.2010
Сообщений: 2,335
05.07.2018, 18:58 #10
vladimirnbd, fetchColumn() возвращает значение одного столбца следующей строки результирующего набора или FALSE, если больше нет строк.

Строка не может быть равна числу.
0
otto-fukin
8 / 44 / 17
Регистрация: 15.06.2017
Сообщений: 382
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
Виталюска
463 / 455 / 225
Регистрация: 26.09.2010
Сообщений: 2,335
20.07.2018, 23:41 #12
Цитата Сообщение от otto-fukin Посмотреть сообщение
в php запросто может быть равна
это когда???
0
Para bellum
Эксперт PHP
3943 / 2929 / 924
Регистрация: 06.01.2011
Сообщений: 8,576
Вчера, 11:57 #13
Цитата Сообщение от Виталюска Посмотреть сообщение
это когда?
otto-fukin об этом говорил:
PHP
1
2
# Сравнение string и integer
var_dump("2" == 2); // true
0
Вчера, 11:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
Вчера, 11:57
Привет! Вот еще темы с решениями:

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

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

Получение результата из БД по дате
Есть таблица, у каждой строки есть 2 поля типа DATE: starts и ends Есть...

Получение результата запроса
Делаю авторизацию. Пытаюсь получить имя пользователя, но не пашет. Наверное,...


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

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

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