pdo- все статьи тега


Кэширование PHP PDO

Я искал ответ на этот вопрос, но нигде его не нашел. Являются ли вызовы PDO::prepare() кэшированными, или я должен кэшировать результат сам, т. е. если я делаю следующее function foo () { $handle = PDO::prepare(...); /* do stuff with the handle */ } Будет ли оператор prepare() кэшироваться PDO, чтобы быстро получить второй, третий и т. д. времена? Или лучше сделать это самому, например function foo() { static $handle = null; if (!$handle) { $handle = PDO::prepare(...); } /* ...

Почему бы мне не отключить PDO:: MYSQL ATTR DIRECT QUERY?

Я наткнулся на (имхо довольно плохо документированный) факт, что по умолчанию PHP PDO имеет флаг MYSQL_ATTR_DIRECT_QUERY, включенный для его драйвера MySQL. Это означает, что вместо того, чтобы фактически использовать подготовленные утверждения, он эмулирует поведение подготовленных утверждений. Это означает, что он заменяет заполнители на стороне клиента экранированными значениями и просто отправляет полный запрос в базу данных как есть. Раньше для этого была веская причина, так как в более с ...

Как объект PHP PDO может вычислить, если он уже находится в транзакции MySQL?

У меня есть два сложных PHP-объекта, каждый из которых имеет данные в нескольких таблицах MySQL. Иногда мне просто нужно удалить один объект A из базы данных, и для этого требуется 3 инструкции SQL. Иногда мне нужно удалить один объект B Из базы данных, который принимает 4 оператора SQL, и который также должен найти и удалить все объекты A, которыми владеет объект B. Таким образом, внутри функции delete_A () я выполняю эти инструкции внутри транзакции. Внутри функции delete_B () я хочу запу ...

Ошибка PDO при использовании значения POST data в качестве параметра

У меня есть инструкция SELECT, которую я создаю с помощью PHP и PDO, чтобы предоставить список пользователей, которые вошли в систему за последние 20 минут. Когда я жестко кодирую интервал времени, оператор SQL выполняет нормально, но когда я пытаюсь заменить интервал, выбранный из веб-формы, я получаю ошибку SQL. Я не знаю, что случилось. Я использую PDO и оператор PREPARE try { $sql = 'SELECT DISTINCT PlayerName FROM Player_Data pd LEFT JOIN character_data cd ON pd.Play ...

Как предотвратить ПДО от интерпретации вопросительного знака в качестве заполнителя?

Для обнаружения существования ключа в hstore, мне нужно выполнить такой запрос: SELECT * FROM tbl WHERE hst ? 'foo' Однако, это дает мне PDOException: PDOException: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound: SELECT * FROM tbl WHERE hst ? 'foo' Есть ли способ избежать вопросительного знака, чтобы PDO не взял его в качестве заполнителя? Я пытался использовать до четырех обратных косых черт, а также двойной вопросительный знак (??), но ничто, кажется, не убеждает P ...

PHP сокращение использования памяти при использовании fputcsv в php: / / output

Мы столкнулись с немного странной проблемой. Все происходит вот так. У нас есть большие объемы данных, которые мы должны вывести клиенту. Эти файлы данных не могут быть предварительно построены, они должны обслуживаться из живых данных. Моим предпочтительным решением было записать в CSV строку за строкой из выборки, подобной этой: while($datum = $data->fetch(PDO::FETCH_ASSOC)) { $size += fputcsv($outstream, $datum, chr(9), chr(0)); } Это обошло много нелепого использования ...

если пустой запрос показывает сообщения в php [дубликат]

На этот вопрос уже есть ответ здесь: Как проверить возвращаемые результаты запроса БД с помощью PDO PHP 3 ответа Мне нужна небольшая помощь с моим кодом. Я хочу показать сообщение, когда таблица пуста. Мой код - function category() { global $config,$db,$lang; $result = "SELECT id, name FROM category ORDER BY id"; $stmt = $db->prepare($result); $stmt->execute(); while( ...

PDO sqlsrv не выполняет запрос execute до конца

Я пытаюсь использовать PDO и оператор while loop в запросе sql server для вставки в базу данных, но цикл while не выполняется до конца, хотя он прекрасно работает с простым запросом, я использую только XAMPP для запуска сервера. Вот мой скрипт для вставки всех дней с 2017-01-01 по 2018-01-01 (гггг-ММ-ДД): try{ $dsn = "sqlsrv:Server=MyServer,1433;Database=MyDB;"; $db = new PDO($dsn, "sa", "MyPassword"); $db->setAttribute (PDO::SQLSRV_ATTR_QUERY_TIMEOUT, 60); $query = " ...

создание базы данных из postgreSQL с помощью symfony

Я работаю с mapbender3, который разработан в symfony2 на моей локальной машине. Меня просят подключить приложение к удаленному серверу potgreSQL. Ниже приведена конфигурация в параметрах .файл yml . parameters: database_driver: pdo_pgsql database_host: 192.168.3.100 database_port: 5434 database_name: idc_core database_path: ~ database_user: ******* database_password: ******* mailer_transport: smtp mailer_host: localhost mail ...

PDO MySQL функция резервного копирования

Эта функция здесь http://davidwalsh.name/backup-mysql-database-php Уже некоторое время плавает по интернету и довольно известен, но его в стандартном mysql. есть ли у кого-нибудь то же самое, но в PDO? если нет, то кто-нибудь хочет его сделать? возможно ли это вообще, я где - то читал, что PDO не делает SHOW CREATE TABLE-это так? Наконец, может ли кто-нибудь объяснить, в чем разница между этой функцией и использованием SELECT * в OUTFILE? (пожалуйста не отмечайте это за то, что содержит ...

Каковы недостатки использования постоянного соединения в PDO

в PDO соединение может быть сделано постоянным с помощью . Согласно руководству php - постоянные соединения не закрываются при завершении скрипта, но кэшируются и повторно используются, когда другой скрипт запрашивает соединение с помощью те же верительные грамоты. Постоянный кэш соединений позволяет избежать создания нового соединения каждый раз скрипт должен разговаривать с базой данных, что приводит к более быстрой работе в интернете приложение. руководство также рекомендует н ...

Как вставить нулевые значения с помощью PDO?

Я использую этот код, и я за разочарования: try { $dbh = new PDO('mysql:dbname=' . DB . ';host=' . HOST, USER, PASS); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'"); } catch(PDOException $e) { ... } $stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)'); $stmt->bindParam(':v1', PDO::PARAM_NULL); // --> Here's the problem PDO::PARAM_NULL, null, '', все они ...

ПДО закрытия соединения

просто довольно простой вопрос относительно PDO по сравнению с MySQLi. С MySQLi, чтобы закрыть соединение, вы можете сделать: $this->connection->close(); однако с PDO он утверждает, что вы открываете соединение с помощью: $this->connection = new PDO(); но чтобы закрыть соединение, вы установите его в null. $this->connection = null; это правильно, и это действительно освободит соединение PDO? (Я знаю, что он делает, как это установлено в null.) Я имею в виду с mysqli, вы дол ...

Как правильно настроить PDO-соединение

время от времени я вижу вопросы, касающиеся подключения к базе данных. Большинство ответов не так, как я это делаю, или я могу просто не получить ответы правильно. Во всяком случае, я никогда не думал об этом, потому что то, как я это делаю, работает для меня. но вот сумасшедшая мысль; может быть, я делаю все это неправильно, и если это так; я действительно хотел бы знать, как правильно подключиться к базе данных MySQL с помощью PHP и PDO и сделать это легко доступный. вот как я это делаю: во ...

Поддержка PDO для нескольких запросов (PDO MYSQL, PDO MYSQLND)

Я знаю, что PDO не поддерживает несколько запросов, выполняемых в одном операторе. Я был Googleing и нашел несколько сообщений, говорящих о PDO_MYSQL и PDO_MYSQLND. PDO_MySQL является более опасным применение чем любое другое традиционное Приложения MySQL. Традиционные СУБД MySQL разрешает только один SQL-запрос. В PDO_MySQL такого ограничения нет, но вы рискуете получить инъекцию несколько запросов. от: защита от SQL-инъекций с использованием PDO и Zend Framework (июнь 2010; Д ...

PDO mysql: как узнать, была ли вставка успешной

Я использую PDO для вставки записи (mysql и php) $stmt->bindParam(':field1', $field1, PDO::PARAM_STR); $stmt->bindParam(':field2', $field2, PDO::PARAM_STR); $stmt->execute(); есть ли способ узнать, если он вставлен успешно, например, если запись не была вставлена, потому что это был дубликат? Edit: конечно, я могу посмотреть на базу данных, но я имею в виду программную обратную связь. ...

PHP PDO возвращает одну строку

обновление 2: Так это самый оптимизированный он может получить? $DBH = new PDO( "connection string goes here" ); $STH = $DBH -> prepare( "select figure from table1" ); $STH -> execute(); $result = $STH -> fetch(); echo $result ["figure"]; $DBH = null; обновление 1: Я знаю, что могу добавить ограничение на sql-запрос, но я также хочу избавиться от цикла foreach, который мне не нужен. ОРИГИНАЛЬНЫЙ ВОПРОС: у меня есть следующий скрипт, который хорош IMO для возврата многих стро ...

Нужно ли закрывать SQL-соединения, открытые с PDO в PHP

когда я открываю соединение MySQL в PHP с помощью только встроенных функций MySQL PHP, я делаю следующее: $link = mysql_connect($servername, $username, $password); mysql_select_db($dbname); //queries etcetera mysql_close($link); когда я открываю соединение с PDO, это выглядит так: $link = new PDO("mysql:dbname=$dbname;host=$servername",$username,$password); //prepare statements, perform queries Я должен явно закрыть соединение, как я делаю с mysql_connect() и mysql_close()? Если нет, то к ...

Как получить числовые типы из MySQL с помощью PDO?

Я использую PDO и MySQL, по какой-то причине при получении значений из базы данных, которые являются типом int, PDOStatement возвращает строковое представление числа, а не значение числового типа. Как мне предотвратить это? Я заметил, что есть атрибут класса PDO:PDO::ATTR_STRINGIFY_FETCHES Это должно позаботиться об этом, но при попытке изменить его, он выдает ошибку, говоря, что атрибут не является допустимым для драйвера MySQL. это нормально получить строки вместо чисел при консультации с ба ...