PHP: <?php $dbh = new PDO ("mysql:host=$host;dbname=$db_name", $login, $pass); $t = "INSERT INTO blog1 (topic, message) VALUES ('%s', '%s')"; $sql = sprintf($t, $title, $content); $result = $dbh->exec($sql); Безопасен ли этот код - на предмет sql инъекций?
это не то, что я хотел услышать PHP: <? $sql = sprintf($t, mysql_real_escape_string($title), mysql_real_escape_string($content)); выдает ошибку. глянь сюда. http://www.scripts.by/zaschita-ot-sql-i ... i-pdo.html
Не в данном примере. Потому что эта функция работает не с PDO. Какой вообще смысл использовать PDO если не использовать его преимущества ? Прекрасная штука есть (по сути тот же sprintf только нормальный) http://www.php.net/manual/en/pdo.prepare.php и вот она то и безопасна.
согласен! уже исправил PHP: <? $t = "INSERT INTO blog1 (topic, message) VALUES ('%s', '%s')"; $sql = sprintf($t, $title, $content); $obj = $dbh->prepare($sql); $obj->execute(); так норм? PHP: <? $sql = "INSERT INTO blog1 (topic, message) VALUES (' $title', '$content)"; //$sql = sprintf($t, $title, $content); $obj = $dbh->prepare($sql); $obj->execute(); а если так?
а толку? вы же все равно строку сами задали. PHP: <?php $sql = "INSERT INTO blog1 (topic, message) VALUES (?,?)"; //$sql = sprintf($t, $title, $content); $obj = $dbh->prepare($sql); $obj->execute(array($title, $content)); вот так уже вроде лучше