mysql_real_escape просто делает текст пустым - PullRequest
0 голосов
/ 15 января 2012

Я пишу небольшой интерфейс PHP-MySQL - Однако, когда я пытаюсь экранировать строки, используя mysql_real_escape, они стираются пустыми!

Допустим, у нас есть файл PHP по URL

http://web/file.php

Содержимое этого файла:

echo $_GET["action"];
echo  mysql_real_escape_string($_GET["action"]);

Теперь, допустим, мы загружаем URL:

http://web/file.php?action=asdfqwerty

FIRST echo выдаст asdfqwerty.

Однако второй ничего не выводит вообще! Я не уверен, почему это ... Кто-нибудь может помочь? Thankyou!

Ответы [ 6 ]

3 голосов
/ 15 января 2012

mysql_real_escape_string требует установленного mysql-соединения. Вероятно, у вас нет одной и скрытых ошибок типа E_WARNING.

php > echo mysql_real_escape_string('asd');
PHP Warning:  mysql_real_escape_string(): Access denied for user 'timwolla'@'localhost' (using password: NO) in php shell code on line 1
PHP Warning:  mysql_real_escape_string(): A link to the server could not be established in php shell code on line 1
3 голосов
/ 15 января 2012

Как задокументировано здесь , mysql_real_escape_string требуется открытое соединение с базой данных. Если ничего не существует, возникает ошибка. Похоже, ваш PHP настроен так, чтобы не выводить ошибки, поэтому вы не видите этого. Вы можете проверить это, используя более высокий уровень ошибки:

<?php
error_reporting(E_ALL);
echo $_GET["action"];
echo  mysql_real_escape_string($_GET["action"]);

Или путем адаптации вашего php.ini .

1 голос
/ 15 января 2012

Вам нужно либо открыть соединение mysql, либо возможность mysql открыть соединение. См. mysql_real_escape_string документацию под link_identifier

0 голосов
/ 15 января 2012

Установили ли вы действующее соединение MySQL раньше?

Если идентификатор ссылки не указан, предполагается последняя ссылка, открытая mysql_connect (). Если такая ссылка не найдена, она попытается создать такую, как если бы mysql_connect () была вызвана без аргументов. Если соединение не найдено или не установлено, генерируется ошибка уровня E_WARNING.

0 голосов
/ 15 января 2012

Согласно документации PHP, mysql_real_escape_string используется для двоичных данных, а mysql_ escape_ string используется для обычных строковых значений.

Если это тоже не сработает, значит, вы не устанавливаете соединение с сервером MySQL.

0 голосов
/ 15 января 2012

Попробуйте поместить ваш $ _GET в переменную типа:

$action = $_GET['action'];
echo $action;
echo mysql_real_escape_string($action);

Отлично работает на моем локальном сервере ...

...