Associazione posizionale di variabili in PDO in PHP

È possibile associare variabili alla query una per una. Questo viene fatto utilizzando il metodo bindValue. Successivamente la query ottenuta viene eseguita, ma in questo caso a execute non viene passato nulla.

Questo tipo di associazione consente di specificare con precisione il tipo della variabile, evitando il wrapping automatico tra virgolette per i valori numerici. Vediamo come si fa. Supponiamo di avere due variabili, una stringa e una numerica:

php<?php
  $name = 'name1';
  $age  = 25;
?>

Prepariamo la query:

php<?php
  $sql = 'SELECT * FROM users WHERE name=? or age=?';
  $res = $pdo->prepare($sql);
?>

Ora associamo le variabili alla query con l'aiuto del metodo bindValue. Nel primo parametro del metodo si specifica il numero della posizione nella query, nel secondo parametro - il nome della variabile, e nel terzo si indica il tipo della variabile (numerico o stringa):

php<?php
  $res->bindValue(1, $name, PDO::PARAM_INT);
  $res->bindValue(2, $age,  PDO::PARAM_STR);
?>

Eseguiamo la query:

php<?php
  $res->execute();
?>

Osserviamo il risultato:

php<?php
  while ($row = $res->fetch()) {
    var_dump($row);
  }
?>
Задание 1

Sono date le variabili:

php<?php
  $name1 = 'name1';
  $name2 = 'name2';
?>

Ottieni gli utenti il cui nome corrisponde al valore della prima o della seconda variabile.

Задание 2

Sono date le variabili:

php<?php
  $age1 = 21;
  $age2 = 22;
?>

Ottieni gli utenti la cui età corrisponde al valore della prima o della seconda variabile.