2016-12-17 3 views
-2

Я не могу использовать функцию real_escape_stringЯ не могу использовать функцию real_escap_string

мой код:

<?php include('includes/db.inc.php'); ?> 
<?php 

$fn = " 'Jim "; 
$ln = " 'John "; 

$first_name = $conn->real_escape_string($fn); 
$last_name = $conn->real_escape_string($ln); 

$conn->query("INSERT INTO users (first_name,last_name) 
VALUES('{$first_name}','{$last_name}') "); 


echo $first_name.' '.$last_name; 

?> 

Выход: в браузере:

\'Jim \'John 

в моей базе данных:

id first_name last_name created 
1 'Jim  'John  2016-12-17 14:51:23 

enter image description here

+0

Опишите, что вы подразумеваете под "can not use". Что не работает? – CGritton

+0

Что случилось с результатом? Переменные попали в базу данных по назначению. Если вы не использовали 'real_escape_string', вы получили бы синтаксическую ошибку, но избежать этого не удалось. – Barmar

ответ

-1

Я думаю, вы понимаете, это не так, real_escape_string() только экранированные символы, как '" и т.д., которые могут ошибка запроса с помощью \, но это не удалить его в строке.

так, что вставляется в базу данных правильно :)

его так:

echo "\"this is a double quote"; 

, как вы видите, это должно быть ошибка во всех браузерах, но так как мы используем \ для избежать двойной кавычки, это будет интерпретироваться как строковый литерал.

Edit: Он может защитить вас в SQL-инъекции, делая MySQL интерпретирует ' в качестве символьной строки. , что произойдет, если вы не используете real_escape_string();

$fn = " 'Jim "; 
$ln = " 'John "; 

$first_name = $fn; 
$last_name = $ln; 

$conn->query("INSERT INTO users (first_name,last_name) 
VALUES('{$first_name}','{$last_name}') "); 

после того, как запрос был выполнен, SQL оператор будет:

INSERT INTO users (first_name,last_name) VALUES(''Jim',''John') 

и что будет синтаксическая ошибка в SQL

так что, если кто-то назовет свое имя '; drop table tablename;, вопрос будет таким, как этот

INSERT INTO users (first_name,last_name) VALUES(''; drop table tablename;',''John') 

после этого запрос выполняется, taadaaa ваш стол ушел

+0

Как эта функция защищает меня? – Ava

+0

Как эта функция защищает меня? Защитите меня для чего? дал мне пример? – Ava

+0

@Ava я отредактировал свой ответ, чтобы ответить вам –

 Смежные вопросы

  • Нет связанных вопросов^_^