Pregunta Cambio de código de MySQL a PDO


He hecho un script CMS escrito usando la sintaxis MySQL.

Quiero reemplazar la sintaxis MySQL con la sintaxis PDO. Puede alguien ayúdame a hacerlo y explícame cómo hacerlo?

Este es el código del guion.

<?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";
?>

6
2017-07-04 02:10


origen


Respuestas:


Primero si quieres cambiar de mysql_* a PDO

tendrá que cambiar todos sus códigos en el script, no solo un        uno solo que simplemente no funcionará

y si vas a cambiar los códigos de mysql_ * a PDO

Deberá cambiar la conexión a la base de datos utilizando PDO

aquí hay una muestra para eso:

// 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();
    }

--------------------------------------------

ahora que lo hicimos con la conexión Le mostraré cómo consultar y buscar tablas

 // 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()

Le mostraré un ejemplo para su código

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

cambiaremos esto a

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

entonces ahora puedes usar $row->news con DOP

y ahora puedes cambiar tus códigos fácilmente a PDO


10
2017-07-04 10:11



Convertir esa secuencia de comandos sería algo así como:

// $pdo = connection

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

// ...

Aquí está la explicación:

  • PDO::prepare creará una declaración preparada a partir de una consulta MYSQL y la almacenará en una variable.
  • PDOStatement::execute ejecutará la declaración preparada utilizando la matriz de parámetros que se le pasa (en este caso, no porque la consulta no tiene ningún parámetro).
  • PDOStatement::fetch obtendrá los resultados de la última ejecución. Por defecto, entra a una matriz. Si pasa PDO::FETCH_OBJ irá a un objeto.

DOP por defecto usa excepciones lo que significa que puede usar un bloque try-catch para detectar el error (del tipo de excepción de PDOException)

También tenga en cuenta que:

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

puede acortarse, usando PDO::query, a:

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

3
2017-07-04 02:14