Kjapp og trygg hosting for Wordpress

Fra mysqli til pdo

kongen

kongemedlem
Hvordan vil denne koden se ut i pdo?

PHP:
$navn = 'Ole';
$etternavn = 'Rex';
$dbconnect = mysqli_connect("HOST","USER","PASSWORD","DATABASE");
if (mysqli_connect_errno()) { echo "Error: " . mysqli_connect_error(); }
$dbconnect->query("SET NAMES utf8");
$navn = mysqli_real_escape_string($dbconnect, $navn);
$results = mysqli_query($dbconnect,"SELECT alder FROM tabell WHERE navn='$navn'");
$row = mysqli_fetch_assoc($results);
$alder = $row['alder'];
$alder = mysqli_real_escape_string($dbconnect, $alder);
$etternavn = mysqli_real_escape_string($dbconnect, $etternavn);
mysqli_query($dbconnect,"UPDATE tabell2 SET alder='$alder' WHERE navn='$navn'");
$sql="INSERT INTO tabell3 (fornavn, etternavn, alder) VALUES ('$navn','$etternavn','$alder')";
if (!mysqli_query($dbconnect,$sql)) { die('Error: ' . mysqli_error($dbconnect)); }
 

kongen

kongemedlem
Er dette noenlunde riktig?

PHP:
$navn = 'Ole';
$etternavn = 'Rex';

$dbconnect = new PDO("HOST","DATABASE","USER","PASSWORD");
$dbconnect->query("SET NAMES utf8");

$sql_1 = "SELECT alder FROM tabell WHERE navn = ?");
$stmt_1 = $dbconnect->prepare( $sql_1 );
$stmt_1->execute(array($navn));

Hvordan fetcher man pdo og finner alder?

$sql_2 = "UPDATE tabell2 SET alder = ? WHERE navn = ?";
$stmt_2 = $dbconnect->prepare( $sql_2 );
$stmt_2->execute(array($alder, $navn));

$sql_3 = "INSERT INTO tabell3 (fornavn, etternavn, alder) VALUES (?,?,?)";
$stmt_3 = $dbconnect->prepare( $sql_3 );
$stmt_3->execute(array($navn, $etternavn, $alder));

Hvordan escaper man med pdo? 'mysqli_real_escape_string' er vel bare for mysqli?

Hvordan fetcher man resultater med pdo? Hva er pdo sin 'mysqli_fetch_assoc'?
 

kongen

kongemedlem
Hvordan frigjør man mysql resultatet og lukker db koblingen i pdo?

PHP:
//mysqli
mysqli_free_result($sql_1);
mysqli_close($dbconnect);
 

kongen

kongemedlem
Er det slik man escaper med pdo?

PHP:
// pdo
$navn = 'Ole';
$navn = $dbconnect->quote($navn);

// mysqli
$navn = 'Ole';
$navn = mysqli_real_escape_string($dbconnect, $navn);
 

adeneo

Medlem
Du bruker mysqli ikke PDO, og i mysqli er det slik du escaper, men generelt sett bør du heller bruke prepared statements.

Det finnes også filtre.
 

kongen

kongemedlem
Jeg prøver å konvertere fra mysqli til pdo og prepared statements, og lurer på om dette

PHP:
$navn = $dbconnect->quote($navn);

er pdo, og tilsvarende denne mysqli

PHP:
$navn = mysqli_real_escape_string($dbconnect, $navn);

eller er begge mysqli og escaping ikke brukes i pdo? Brukes det kun filtre?

For å frigjør et mysql resultatet og lukke db koblingen så brukes dette i mysqli

PHP:
mysqli_free_result($sql_1);
mysqli_close($dbconnect);

så leste jeg at for pdo så skal man sette dette til NULL, hvilke av disse er riktig?

PHP:
$sql_1 = "NULL";
$dbconnect = "NULL";

$sql_1 = "";
$dbconnect = "";

$sql_1 = 0;
$dbconnect = 0;
 
Topp