Изменение кода из MySQL в PDO

Я создал скрипт CMS, написанный с использованием синтаксиса MySQL.

Я хочу заменить синтаксис MySQL синтаксисом PDO. Может кто-нибудь помочь мне сделать это и объяснить мне, как это сделать ?

Это код из сценария.

<?php $querytemp = mysql_query("select * from main_setting") or die (mysql_error()); $row = mysql_fetch_object($querytemp); include "inc/upcenter_block.php"; echo " <div class='headmenu'>$row->news1</div> <div class='bodymenu'> <p>".nl2br($row->news)."</p> </div> "; include "inc/downcenter_block.php"; ?> 

Сначала, если вы хотите изменить с mysql_* на PDO

вам нужно будет изменить все ваши коды в скрипте, а не только один, который просто не работает

и если вы собираетесь изменить коды от mysql_ * до PDO

вам нужно будет изменить соединение с базой данных с помощью PDO

здесь образец для этого:

 // here we set the variables $dbhost = "localhost"; $dbname = "testcreate"; $dbuser = "root"; $dbpass = "mysql"; // here we are using ( try {} ) to catch the errors that will shows up and handle it in a nicer way try { $db = new PDO('mysql:host='.$dbhost.';dbname='.$dbname.';charset=utf-8', ''.$dbuser.'', ''.$dbpass.''); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo 'Error : <br>' . $e->getMessage(); } 

 // here we set the varible for the connection = then starting the cennction with new POD(); $db = new PDO('mysql:host='.$dbhost.';dbname='.$dbname.';charset=utf-8', ''.$dbuser.'', ''.$dbpass.''); 

 // here we set an Attribute to handle the errors $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // you dont need to use it in our case because we already catching the error and handling it in out way 

  // here we catch the error then handling it by echo a msg and then we used // $e->getMessage(); to get the error msg that should be throwing in the page catch (PDOException $e) { echo 'Error : <br>' . $e->getMessage(); } 

——————————————–

теперь, когда мы закончили с подключением, я покажу вам, как запрашивать и извлекать таблицы

  // this is how we will use query $qr = $db->query() // and this is how to fetch it by taking the query variable and use the arrow then fetch $ro = $qr->fetch() 

iwill покажет вам пример для вашего кода

 $querytemp = mysql_query("select * from main_setting") or die (mysql_error()); $row = mysql_fetch_object($querytemp); 

мы изменим это на

 $querytemp = $db->query("select * from main_setting"); $row = $querytemp->fetch(PDO::FETCH_OBJ); 

поэтому теперь вы можете использовать $row->news с PDO

и теперь вы можете легко изменить свои коды на PDO

Преобразование этого сценария будет чем-то вроде:

 // $pdo = connection try { $stmt = $pdo->prepare("select * from main_setting"); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_OBJ); } catch (\PDOException $e) { // something went wrong } // ... 

Вот объяснение:

  • PDO::prepare создаст подготовленный оператор из запроса MYSQL и сохранит его в переменной.
  • PDOStatement::execute выполнит подготовленный оператор, используя массив переданных ему параметров (в этом случае нет, поскольку запрос не имеет никакого параметра).
  • PDOStatement::fetch будет PDOStatement::fetch результаты последнего выполнения. По умолчанию он выбирается в массив. Если вы передадите PDO::FETCH_OBJ он будет входить в объект.

PDO по умолчанию использует исключения, что означает, что вы можете использовать блок try-catch для исключения ошибки (типа исключения PDOException ).

Также обратите внимание:

 $stmt = $pdo->prepare("select * from main_setting"); $stmt->execute(); 

можно сократить, используя PDO::query , чтобы:

 $stmt = $pdo->query("select * from main_setting");