Могу ли я преобразовать функции mysql в PDO по одному за раз?

У меня есть куча запросов mysql, на мой взгляд, что мне нужно будет преобразовать в PDO. Могу ли я сделать этот один запрос за раз, и все остальные функции продолжают работать? Например, если я конвертирую 1 запрос в PDO с тем, что препятствует работе всех моих других запросов mysql?

Related of "Могу ли я преобразовать функции mysql в PDO по одному за раз?"

Это должно работать без каких-либо проблем, если у вас открыто 2 подключения к базе данных, одно для функций mysql_* и одно для PDO.

Единственный потенциальный недостаток – временные дополнительные накладные расходы двух соединений db вместо одного.

Я не понимаю, почему это произойдет, если вы не используете какой-либо специальный класс обработчика базы данных или что-то в этом роде.

Одна вещь, которую вы, возможно, захотите рассмотреть, – это не использование сценария «соединений», а использование большего количества настроек OOP / data-model.

В основном, вы сохраняете данные о соединении в отдельном файле – у меня только что определены некоторые константы, к которым я мог бы получить доступ позже в скрипте, в который он включается. Оттуда вы создаете класс, который отвечает за установление собственного соединения при создании экземпляра. Этот класс будет содержать методы, соответствующие вашим типичным запросам, возможно, метод для запуска необработанного запроса по мере необходимости.

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

Для справки, вот урезанная версия кода, который я использовал:

db.php

 <?php # Set the database access information as constants. DEFINE ('DB_USER', 'your_db_user_name'); DEFINE ('DB_PASSWORD', 'your-super-duper-secret-password'); DEFINE ('DB_HOST', 'localhost'); DEFINE ('DB_NAME', 'schema-name'); DEFINE ('DB_CONNECTION', 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME ); ?> 

блог-model.php

 <?php # File: blog-model.php # Version: 1.0 # Updated: 2011.9.4 # Meta: This file contains the database access information. # This file also establishes a connection to MySQL and selects the database. @require_once( ROOT . DS . 'config' . DS . 'db.php' ); # Utility Class class BlogModel { protected $pdo; # Constructor function __construct() { $this->connect(); } function __destruct() { } # Connect to the database function connect() { # Database connectivity can be a tricky beast, so I'm wrapping the entire block in a try/catch try { $this->pdo = new PDO( DB_CONNECTION, DB_USER, DB_PASSWORD, array( PDO::ATTR_PERSISTENT => true ) ); # Set character set to UTF-8 (adds support for non-ASCII languages). # Note this can cause issues with BLOB-style fields, especially with INSERTs $this->pdo->exec( "SET CHARACTER SET utf8" ); return true; } catch(PDOException $e) { # Add code to write out error log and alert administrator trigger_error( "<p>Could not select the database</p>\n<p>MySQL Error: " . $e->getMessage() . "</p>" ); return false; } } # Run an INSERT query; that is, insert a new row (or rows) into a MySQL table function insert( $authorid, $title, $permalink, $category, $body, $tags, $abstract ) { try { # Named parameters (prefered) $stmt = $this->pdo->prepare( "INSERT INTO pages SET title = :title, permalink = :permalink, category = :category, body = :body, tags = :tags, abstract = :abstract, author = :authorid, timestamp = NOW();" ); $stmt->bindParam( ':title', $title ); $stmt->bindParam( ':permalink', $permalink ); $stmt->bindParam( ':category', $category ); $stmt->bindParam( ':body', $body ); $stmt->bindParam( ':tags', $tags ); $stmt->bindParam( ':abstract', $abstract ); $stmt->bindParam( ':authorid', $authorid, PDO::PARAM_INT ); return $stmt->execute(); } catch( Exception $e ) { # Add code to write out error log and email administrator trigger_error( "<p>An error occurred whilst executing your query:\n<br />MySQL Error: " . $e->getMessage() . "</p>" ); return false; } } # Run an UPDATE query; that is, update an existing row (or rows) in a MySQL table function update( $id, $title, $category, $body, $tags, $abstract ) { try { # Update the project matching the supplied id # Named parameters (prefered) $stmt = $this->pdo->prepare( "UPDATE pages SET title = :title, category = :category, body = :body, tags = :tags, abstract = :abstract, lastupdated = NOW() WHERE permalink = :id LIMIT 1;" ); $stmt->bindParam( ':id', $id ); $stmt->bindParam( ':title', $title ); $stmt->bindParam( ':category', $category ); $stmt->bindParam( ':body', $body ); $stmt->bindParam( ':tags', $tags ); $stmt->bindParam( ':abstract', $abstract ); return $stmt->execute(); } catch( Exception $e ) { # Add code to write out error log and email administrator trigger_error( "<p>An error occurred whilst executing your query:\n<br />MySQL Error: " . $e->getMessage() . "</p>" ); return false; } } # Run a DELETE query; that is, remove a record (or records) from a MySQL table function delete( $id ) { try { # Delete the project matching the supplied id # Named parameters (prefered) $stmt = $this->pdo->prepare( "DELETE FROM pages WHERE id = :id LIMIT 1;" ); $stmt->bindParam( ':id', $id, PDO::PARAM_INT ); return $stmt->execute(); } catch( Exception $e ) { # Add code to write out error log and email administrator trigger_error( "<p>An error occurred whilst executing your query:\n<br />MySQL Error: " . $e->getMessage() . "</p>" ); return false; } } # Close the connection function close() { $this->pdo = null; } } ?> 

Это, вероятно, не совсем актуально для вашего первоначального вопроса, но, возможно, вы (или какой-то случайный Google-er) можете извлечь из этого какое-то использование.