Mysql
 sql >> база данни >  >> RDS >> Mysql

единични кавички в SQL заявка

mysql_real_escape_string() и sql инжекции вече бяха споменати.
Но точно сега вашият скрипт (старателно) трябва да смеси оператора sql с данните/параметрите и в следващата стъпка MySQL сървърът трябва да отдели данните от оператора.
Използване (от страна на сървъра) подготвени отчети и двете „части“ на вашата заявка се изпращат поотделно и sql анализаторът (на вашия MySQL сървър) никога не може да се „обърка“ относно това къде завършва изразът и къде започват данните.

php-mysql модулът не познава подготвени оператори, но php-mysqli и PDO направи.

$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();

Може да изглежда много надуване, ако използвате $stmt само за една операция. Но имайте предвид, че в противен случай трябва да извикате mysql_real_escape_string() за всеки параметър.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване на данни в MySQL таблица с помощта на VB.NET

  2. Как да променя типа на двигателя за съхранение на MySQL?

  3. UTF-8 битки за кодиране на символи json_encode()

  4. PHP mysql_connect() грешка в командния ред

  5. Грешка в Mysql Query - Auto Coins ADD