Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przygotowane oświadczenia MySQL

Użyj PDO (obiekty danych PHP) aby połączyć się z bazą danych MySQL. Ta metoda zapewni, że wszystkie dane wejściowe do bazy danych będą zawsze traktowane jako ciągi tekstowe i nigdy nie będziesz musiał wykonywać żadnych ręcznych znaków ucieczki.

W połączeniu z właściwym użyciem html_entities() do wyświetlania danych z Twoja baza danych to solidny i dobry sposób na ochronę Twojej strony przed wstrzyknięciem. Zawsze używam PDO do obsługi wszystkich połączeń z bazami danych w moich projektach.

Utwórz obiekt bazy danych (i w tym przypadku wymuś określone kodowanie znaków):

try {
    $db = new PDO("mysql:host=[hostname];dbname=[database]",'[username]','[password]');
    $db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8");
    $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    $db->exec('SET NAMES utf8');
} catch (PDOException $e) {
    echo $e->getMessage();
}

Następnie użyj go w ten sposób:

$id = 1;
$q = $db->prepare('SELECT * FROM Table WHERE id = ?');
$q->execute(array($id));
$row = $q->fetch();
echo $row['Column_1'];

lub

$q = $db->prepare('UPDATE Table SET Column_1 = ?, Column_2 = ? WHERE id = ?');
$q->execute(array('Value for Column_1','Value for Column_2',$id));

oraz z symbolami wieloznacznymi:

$search = 'John';
$q = $db->prepare('SELECT * FROM Table WHERE Column_1 LIKE ?');
$q->execute(array('%'.$search.'%'));
$num = $q->rowCount();
if ($num > 0) {
  while ($row = $q->fetch()) {
    echo $row['Column_1'];
  }
} else {
  echo "No hits!";
}

Czytaj więcej:

Jak mogę zapobiec wstrzykiwaniu SQL w PHP?

Kiedy *nie* używać przygotowanych wyciągów?

jak bezpieczne są przygotowane oświadczenia PDO

http://php.net/manual/en/book.pdo.php



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ważne kontrole stanu serwerów MySQL Source-Replica

  2. Odkrywanie serwera MySQL Binlog — Ripple

  3. Dlaczego MySQL pozwala na grupowanie według zapytań BEZ funkcji agregujących?

  4. SQL SERVER – Sztuczka – Uruchamianie SSMS z innym kontem Windows

  5. Długość indeksu varchar MySQL