Косит в таблицах MySQL, но использует PDO и параметризованные запросы. Что происходит? - PullRequest
1 голос
/ 25 января 2010

Хорошо, поэтому мой код для обновления таблиц в моей базе данных различен:

$query = "
  insert into Comment 
    (Comment, CommentDate, Rating, UserRid) 
  values 
    (:comment, now(), 0, :userrid )" ;

try {           
  $db_conn = new PDO('mysql:host='.$db_server.';dbname='.$db_name, $db_username, $db_password );

  $db_conn->beginTransaction();
  $prep = $db_conn->prepare($query);
  $prep->bindParam(':comment', $comment, PDO::PARAM_STR, 500);
  $prep->bindParam(':userrid', $userrid, PDO::PARAM_INT, 20);
  $prep->execute();

  $db_conn->commit();
} catch (PDOException $e)  {
  $db_conn.rollBack();
  echo "Error!: " . $e->getMessage() . "<br/>";
  die();
}

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

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

Спасибо заранее, Michael

Ответы [ 2 ]

4 голосов
/ 25 января 2010

Возможно, вы включили magic_quotes_gpc(), вам нужно сделать что-то вроде этого:

if (get_magic_quotes_gpc() == true)
{
    $comment = stripslashes($comment);
    $userrid = stripslashes($userrid);
}

Если вы используете PHP 5.3+, вы можете избавиться от всехволшебные кавычки переменных, помещая следующие строки кода в верхней части вашего файла:

if (get_magic_quotes_gpc() === 1)
{
    $_GET = json_decode(stripslashes(json_encode($_GET, JSON_HEX_APOS)), true);
    $_POST = json_decode(stripslashes(json_encode($_POST, JSON_HEX_APOS)), true);
    $_COOKIE = json_decode(stripslashes(json_encode($_COOKIE, JSON_HEX_APOS)), true);
    $_REQUEST = json_decode(stripslashes(json_encode($_REQUEST, JSON_HEX_APOS)), true);
}

Если вы используете более низкую версию PHP, вы должны взглянуть на эту страницу .

1 голос
/ 25 января 2010

Он не позволяет вам добавить их , но такие вещи, как magic_quotes_gpc, добавят их независимо от того, нужны они или нет.

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