Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
23 / 22 / 20
Регистрация: 13.07.2014
Сообщений: 330
1

PDO::prepare для нескольких строк SQL

22.07.2018, 12:59. Показов 1086. Ответов 3
Метки нет (Все метки)

sql содержит несколько строк кода,
можно их выполнить одним приемом, или нужно для каждой строки sql писать свой код pdo?

мой код не работает
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                $sql = "
                    UPDATE classes SET last = :time WHERE id = :class;
                    INSERT INTO class_public(user, time, parent, content, layout) VALUES(:di, :time, :class, :public, :setLayout);
                    SET @ld := LAST_INSERT_ID();
                    INSERT INTO class_shared(user, classes, obj, pu, time) VALUES(:di, :class, @ld, :di, :time);
                ";
                $rqs = $BD -> prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
                $rqs -> execute(array(
                    ':time'         => $time,
                    ':class'        => $class,
                    ':di'           => $di,
                    ':public'       => $public,
                    ':setLayout'    => $setLayout
                ));
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2018, 12:59
Ответы с готовыми решениями:

PDO и prepare по переменной
Добрый день, уже час бьюсь над проблемой и никак не могу решить, как получить значение из таблицы,...

PDO bindValue и prepare
Всем привет. Никак не могу понять, в чем ошибка ... Не могу совместить prepare и bindValue. (...

Не работает PDO::prepare
Не заполняется таблица.Подскажите пожалуйста в чем беда??((Ошибку не выдает-просто пустая таблица и...

PDO prepare Не получается выборка из базы
Доброго времени суток! Пытаюсь переделать запросы для защиты от sql инъекций, но ни чего в это...

3
30 / 45 / 19
Регистрация: 18.07.2018
Сообщений: 578
22.07.2018, 13:52 2
Цитата Сообщение от WeMeSder Посмотреть сообщение
@
дырка
0
23 / 22 / 20
Регистрация: 13.07.2014
Сообщений: 330
22.07.2018, 16:33  [ТС] 3
Все дело в транзакциях.
Как оказалось, что если использовать транзакции, то множественные запросы с prepare не проходят.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$BD -> beginTransaction();
$sql = "
    UPDATE classes SET last = :time WHERE id = :class;
    INSERT INTO class_public(user, time, parent, content, layout) VALUES(:di, :time, :class, :public, :setLayout);
    INSERT INTO class_shared(user, classes, obj, pu, time) VALUES(:di, :class, 11, :di, :time);
";
$rqs = $BD -> prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$rqs -> execute(array(
    ':time'         => $time,
    ':class'        => $class,
    ':di'           => $di,
    ':public'       => $public,
    ':setLayout'    => $setLayout
));
$BD -> commit();
Если использовать такой запрос, с множественными строками sql, то от ::transaction следует отказаться.

В принципе, по моему это логично.)
0
14 / 60 / 21
Регистрация: 15.06.2017
Сообщений: 572
23.07.2018, 18:48 4
prepare - это один запрос. В SQL запрос заканчивается на точке с запятой. Ваш пример - это SQL скрипт к php не имеющий отношения. Если есть интерес, продам sql парсер на php, который любые "портянки" sql скриптов прогоняет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2018, 18:48

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

PHP PDO PREPARE (ошибка SQLSTATE[42000])
$dbh = new PDO(..); $tableName = 'Name'; $outData = $dbh->prepare('SELECT * FROM :tableName...

PDO - одно значение для нескольких параметров
Здравствуйте! Запрос содержит несколько параметров, которым присваивается одно и то же значение: ...

Изменение запроса в зависимости от выбранных строк в нескольких DbGrid (в SQL получить значения из нескольких DataSet)
Здравствуйте. Есть таблицы и компоненты: Tbl_authors – Таблица авторов. С ней связаны...

Объединить результат нескольких строк в запросе Linq SQL
У меня есть 2 связанные таблицы. Одна - с заявками и двумя колонками: RequestId и PersonId. Вторая...


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

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

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