sql >> Databáze >  >> RDS >> Mysql

jednoduché uvozovky v SQL Query

mysql_real_escape_string() a sql injections již byly zmíněny.
Ale právě teď musí váš skript (pracně) smíchat příkaz sql s daty/parametry a v dalším kroku musí server MySQL oddělit data od příkazu.
Pomocí (na straně serveru) připravená prohlášení obě „části“ vašeho dotazu se odesílají samostatně a analyzátor sql (vašeho serveru MySQL) se nikdy nemůže „zmást“ ohledně toho, kde končí příkaz a začínají data.

php-mysql modul nezná připravené příkazy, ale php-mysqli a CHOP udělat.

$pdo = new PDO('mysql:host=localhost;dbname=test', '...', '...'); 
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$stmt = $pdo->prepare('
  UPDATE
    Videos
  SET
    Title=:title ,
    Preacher=:preacher ,
    Date=:date ,
    Service=:service ,
    File=:file ,
    Description=:description
  WHERE
    id=:id
');
$stmt->bindParam(':title', $_POST['title']);
$stmt->bindParam(':preacher', $_POST['preacher']);
$stmt->bindParam(':date', $_POST['date']);
$stmt->bindParam(':service', $_POST['service']);
$stmt->bindParam(':file', $_POST['file']);
$stmt->bindParam(':description', $_POST['description']);
$stmt->bindParam(':id', $_GET['id']); // really _GET?
$stmt->execute();

Pokud použijete $stmt pouze pro jednu operaci, může se to zdát hodně nafouklé. Ale počítejte s tím, že jinak musíte pro každý parametr volat mysql_real_escape_string().



  1. Jak modernizovat své podnikání v roce 2022

  2. zadáním správného uživatelského jména a hesla získáte ORA-01017:neplatné uživatelské jméno/heslo; přihlášení odepřeno

  3. Jak přidat komentáře do tabulky v Oracle SQL Developer?

  4. 8 způsobů, jak přidat dny k datu v MariaDB