Intereting Posts
В чем разница между модификаторами доступа в php? Невозможно использовать возвращаемое значение функции в контексте записи? php DOMDocument добавляет заголовки <html> с объявлением DOCTYPE Получение данных для нескольких одиночных или справочных без использования оператора PHP – преобразование всех ошибок в исключения – хорошее или плохое? Как вы выполняете несколько операторов SQL в одной mysql_query? Как получить атрибут узла с пространством имен с помощью SimpleXML? Как перейти к изменению WordPress «Страницы Добавить новый экран» Есть ли способ заставить Yii перезагрузить модульные активы по каждому запросу? Как получить числовые типы из MySQL с помощью PDO? Различные привязки WCF, их отличия и совместимость с другими платформами Файл загрузки Codeigniter не работает в Интернете, но работает на localhost Использование обложек памяти php: // вызывает ошибки Общие функции CRUD в PHP Простая разбивка на страницы / кеш

Как избежать кавычек при вставке в базу данных с помощью PHP

Я довольно новичок в PHP, так что извините, если звучит такая легкая проблема … 🙂

У меня появляется сообщение об ошибке при вставке содержимого, содержащего кавычки в мой db. вот что я пытался избежать цитат, но не работал:

$con = mysql_connect("localhost","xxxx","xxxxx"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("test", $con); $nowdate = date('dm-Y') $title = sprintf($_POST[title], mysql_real_escape_string($_POST[title])); $body = sprintf($_POST[body], mysql_real_escape_string($_POST[body])); $sql="INSERT INTO articles (title, body, date) VALUES ('$title','$body','$nowdate'),"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } header('Location: index.php'); 

Не могли бы вы предоставить какое-либо решение, пожалуйста?

Заранее спасибо.

Mauro

Solutions Collecting From Web of "Как избежать кавычек при вставке в базу данных с помощью PHP"

он должен работать без материала sprintf

 $title = mysql_real_escape_string($_POST[title]); $body = mysql_real_escape_string($_POST[body]); 

Пожалуйста, начните использовать подготовленные параметризованные заявления. Они устраняют потребность в любых проблемах, связанных с утечкой SQL, и закрывают лазейку SQL-инъекций, что строки-конкатенированные операторы SQL остаются открытыми. Кроме того, они гораздо приятнее работать и намного быстрее при использовании в цикле.

 $con = new mysqli("localhost", "u", "p", "test"); if (mysqli_connect_errno()) die(mysqli_connect_error()); $sql = "INSERT INTO articles (title, body, date) VALUES (?, ?, NOW())"; $stmt = $con->prepare($sql); $ok = $stmt->bind_param("ss", $_POST[title], $_POST[body]); if ($ok && $stmt->execute()) header('Location: index.php'); else die('Error: '.$con->error); 

При любом запросе базы данных, особенно вставках из веб-приложения, вы действительно должны использовать параметры. См. Здесь для справки PHP о том, как использовать параметры в ваших запросах: параметры PHP

Это поможет предотвратить атаки SQL-инъекций, а также помешать вам избежать символов.

Ваш код

 $sql="INSERT INTO articles (title, body, date) VALUES ('$title','$body','$nowdate'),"; 

должны быть следующими

 $sql="INSERT INTO articles (title, body, date) VALUES ('$title','$body','$nowdate')"; 

запятая не должна быть в конце запроса