буквенные кавычки, введенные в базу данных подготовленным оператором, содержат предшествующую обратную косую черту - PullRequest
0 голосов
/ 01 февраля 2012

Я пытаюсь создать простой веб-интерфейс для своей базы данных и использую подготовленные операторы, потому что они должны предотвращать атаки с использованием SQL-инъекций. В любом случае, моя проблема заключается в том, что если я введу в форму одинарные или двойные кавычки и отправлю их, то они будут введены в базу данных, которой предшествует обратный слеш, который также распечатывается вместе с ними, когда элементы выбираются из базы данных.

Итак, как мне ввести буквенную кавычку в базу данных, не получая предшествующую обратную косую черту из-за оператора prepare? Приветствия.

<?php

$heading = $_POST['heading'];
$story = $_POST['story'];

$mysqli = new mysqli('localhost',$username,$password,'mydb');
if ($mysqli->connect_errno)
  echo "Failed to connect: Error (".$mysqli->connect_errno.") ".$mysqli->connect_error;

if (  !$stmt = $mysqli->prepare('INSERT INTO news (heading,story) VALUES (?,?)')  )
  echo "Prepare failed: Error (".$mysqli->errno.") ".$mysqli->error;

if (  !$stmt->bind_param('ss',$heading,$story)  )
  echo "Binding paramaters failed: (".$stmt->errno.") ".$stmt->error;

if (!$stmt->execute())
  echo "Execute failed: (".$stmt->errno.") ".$stmt->error;

$stmt->close();

?>

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

Используйте htmlspecialchars() для преобразования специальных символов в объекты HTML или mysql_escape_string(), чтобы экранировать все «странные» символы

1 голос
/ 02 февраля 2012

Убедитесь, что magic_quotes отключен в php.ini.

0 голосов
/ 01 февраля 2012

Рассматривали ли вы использование каких-либо собственных функций PHP, таких как mysql_real_escape_string () или addlashes ()?

Эти функции позволяют избежать ввода потенциально опасных строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...