Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 25.10.2017
Сообщений: 3

$pdo->execute Выдает ошибку

25.10.2017, 18:46. Показов 2027. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте! Весь день не могу понять почему не работает код. обьект создается корректно, записывать в базу получается, но вот при чтении вылезла ошибка, сперва пытался отладить ее в том огромном коде, но уже к вечеру тупо написал в index.php вот этот код и то же самое


PHP
1
2
3
4
5
6
7
8
9
<?php
    function __autoload($classname)
    {
    require_once(__DIR__."\\$classname.php");
    }
    $dbh =  Lib\Connect::getInstance();
    $tab=$dbh->prepare('SELECT username, email, date, message FROM messages ORDER BY :column :course LIMIT :number, :count');
    $tab->execute(["column"=>"username","course"=>"DESC","number"=>"0","count"=>"5"]);
    while($val=$tab->fetch()) print_r($val);

ругается на строчку $tab->execute(["column"=>"username","course"=>"DESC","n umber"=>"0","count"=>"5"]); (здесь она 8ая по счету)
все так делают, у всех работает, у меня ошибка
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0', '5'' at line 1 in Z:\home\shkuzja.ru\www\index.php:11 Stack trace: #0 Z:\home\shkuzja.ru\www\index.php(11): PDOStatement->execute(Array) #1 {main} thrown in Z:\home\shkuzja.ru\www\index.php on line 11
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2017, 18:46
Ответы с готовыми решениями:

PDO (родительский), как подавить ошибку подключения
function __construct( ... ){ try{ $attrs = array(PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_SILENT); parent::__construct(... ,...

Функция для PDO execute
Всем привет. Есть функция, которая автоматически собирает значения в инпутах и формирует часть запроса в бд, выглядит она так: function...

cn.Execute('INSERT INTO Kassets (N_kassete) VALUES(T1.Value)') Выдает синтаксическую ошибку
Есть поле ввода input type='text' name='T1' Пытаюсь передать значение, введенное в T1 в БД cn.Execute('INSERT INTO Kassets (N_kassete)...

4
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,912
25.10.2017, 19:21
http://phpfaq.ru/pdo

Раздел "PDO и оператор LIMIT".
0
0 / 0 / 0
Регистрация: 25.10.2017
Сообщений: 3
25.10.2017, 19:26  [ТС]
Вот спасибо! сейчас попробую. просто пробовал эту строку в консоль вбивать, все срабатывало, поэтому считал строку корректной, и пробовал значениям лимитов передавать строчные и int значения, а там вон оказывается какой ньюанс. как заработает отпишусь
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,912
25.10.2017, 19:33
Цитата Сообщение от Shkuzja Посмотреть сообщение
"column"=>"username","course"=>"DESC "
В PDO плейсхолдеры можно использовать только для значений. Колонки, таблицы, направление сортировки подставлять нельзя.
0
0 / 0 / 0
Регистрация: 25.10.2017
Сообщений: 3
25.10.2017, 21:23  [ТС]
С чтением из базы вроде бы разобрался (наверное не особо правильно, но работает), теперь если создать через командную строку таблицу в базе, то сайт работает, но если удалить таблицу, то выдает ошибку. $pdo->exec чем то ему не нравится


Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1030 Got error 168 from storage engine in Z:\home\shkuzja.ru\www\View\Content.php: 53 Stack trace: #0 Z:\home\shkuzja.ru\www\View\Content.php( 53): PDO->exec('CREATE TABLE me...') #1 Z:\home\shkuzja.ru\www\View\Content.php( 14): View\Content->content(Object(PDO)) #2 Z:\home\shkuzja.ru\www\index.php(8): View\Content->__construct(Object(PDO)) #3 {main} thrown in Z:\home\shkuzja.ru\www\View\Content.php on line 53

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
namespace View;
 
class Content
{
    public function __construct($ob, $col='username',$num='0',$coun='20', $cour='DESC')
    {
        $this->dbh = $ob;
        $this->course = $cour;
        $this->column = $col;
        $this->number = $num;
        $this->count = $coun;
        $this->tabheader();
        $this->content($ob);
    }
    public function getInstance()
    {
    return '<div class="content"><table align="center" >'.$this->headtab.$this->messages.'</table></div>';
    }
    private $count;
    private $course;
    private $column;
    private $headtab;
    private $messages;
    private $number;
    private function tabheader()
    {
    $cls = ['username'=>'"table"','email'=>'"table"','date'=>'"table"','usernameroute'=>'"uroute"','emailroute'=>'"uroute"','dateroute'=>'"uroute"'];
    $cls[$this->column]= 'table1';
    $cls[$this->column.'route']=$this->course.'route';
    $this->headtab = "<tr>
    <td><div class=$cls[username]><div class=$cls[userroute]></div>Пользователь</div></td>
    <td><div class=$cls[email]><div class=$cls[emlroute]></div>E-mail</div></td>
    <td><div class=$cls[date]><div class=$cls[dateroute]></div>Дата</div></td>
    <td><div class=\"table\">Сообщение</div></td>
    </tr>";
    }
    private function content($dbh)
    {
        $res = $dbh->query('SHOW TABLES LIKE "messages"');
        if($res->rowCount()=== 0)
        {
            $query='CREATE TABLE messages (
            date DATETIME NOT NULL,
            username TEXT NOT NULL,
            email TEXT NOT NULL,
            homepage TEXT,
            message MEDIUMTEXT NOT NULL,
            ip TINYTEXT NOT NULL,
            client TEXT,
            appname TEXT
            )';
            $tabl=$dbh->exec($query);
        }
        $query="SELECT username, email, date, message FROM messages ORDER BY $this->column $this->course LIMIT $this->number, $this->count";
        $ins=$dbh->query($query);
           foreach($ins->fetchAll() as $val)
        {
            $this->messages.= '<tr>
            <td><div class="table">'.$val['username'].'</div></td>
            <td><div class="table">'.$val['email'].'</div></td>
            <td><div class="table">'.$val['date'].'</div></td>
            <td><div class="table">'.$val['message'].'</div></td>
            </tr>' ;
         }
    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2017, 21:23
Помогаю со студенческими работами здесь

PDO - not execute
И так делаю подключение к ДБ через PDO.PDO возвращает PDOobject()..все OK.. Теперь делаю обычный запрос &quot; SELECT username FROM...

Mssql PDO execute procedure return output data
Приветствую гуру! есть хранимая процедура на сервере DECLARE @Code varchar(8) EXEC @return_value = . @dID = id, @Code = @Code...

Как быть с подготовленными запросами в PDO? execute() не возвращает количество затронутых строк
Метод exec() возвращает количество затронутых строк, но его нельзя использовать в подготовленных запросах. Для этого существует метод...

СМА Hansa PG5510A412 s/n 04454930213108 после нескольких минут выдает ошибку, выдает ошибку
Hansa PG5510A412 s/n 04454930213108 отработала 2 месяца на этом же месте, магазин где брали закрылся. После нескольких минут работы на...

Программа которая выдает платформу компьютера выдает ошибку
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru