Как вставить косую черту в БД mysql после addlashes () - PullRequest
0 голосов
/ 06 февраля 2012
<?php
$link = mysql_connect('localhost', 'root', 'root')
    OR die(mysql_error());
mysql_select_db('autos') or die('no db');
$bookName = "O'relly";
$user = addslashes($bookName);

$query = "INSERT INTO makes VALUES(null, '{$user}')";
mysql_query($query) OR die(mysql_error());

var_dump($user);

?>

Вывод дампа переменной является строкой 'O \' relly '(длина = 8) Но в БД хранится как 'O'relly

Похоже, полоски Mysql перед вставкой в ​​БД. Это правда?

1 Ответ

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

SQL не удаляет обратную косую черту, он интерпретирует ее (правильно) при анализе вашей команды.Без косой черты SQL будет видеть

INSERT INTO makes VALUES(null, 'O'relly')

, что является строкой 'O', за которой следует синтаксическая ошибка.(Или хуже: это может быть использовано для страха "SQL инъекция атаки").

Короче говоря, это работает как задумано.

...