2013-04-25 2 views
0

пространства не меняется с подчеркнуто при отправке из Java -> PHP -> SQLПробелы в Java/PHP

Java код:

String urlString = "http://www.mysite.com/auth/verifyuser.php?name="+name.toLowerCase().replace(" ","_"); 

PHP код:

$name = mysql_real_escape_string($_GET['name']); 
$name = str_replace(' ', '_', $name); 
$query = "select * from authinfo where name LIKE '$name'"; 
mysql_query($query); 
$num = mysql_affected_rows(); 

if ($num > 0) { 
echo '1'; 
} else { 
echo '0'; 
} 

когда Я внедряю тестовый журнал в базе данных SQL, он как-то все еще появляется с пробелами вместо подчеркиваний (хотя я заменяю его на Java и PHP), а файл PHP возвращает «0», а не «1». Я слышал, что проблема может быть пробелами? Кажется, что это происходит только с определенными пользователями, в основном с пользователями Mac.

+0

вы уверены, что строка на самом деле имеет пробелы и не какой-то другой пропуски? – eis

ответ

0

Если ваш php-файл возвращает 0, это означает, что ваш запрос не выполняется. Где вы устанавливаете соединение с базой данных перед выполнением запроса?

+0

Нет подключения, но для пользователей с пробелами в их именах он будет работать только в 50% случаев по какой-либо причине. – Konceal

0

Примечание: where name = '$name'

mysql_affected_rows проблемы INSERT, UPDATE и DELETE.

$r = mysql_query($query); 
$num = mysql_num_rows($r); 
0

Небезопасно передавать необработанное имя в URL без его кодирования.

String urlString = "http://www.example.com/auth/verifyuser.php?name=" + URLEncoder.encode(name.toLowerCase(), "UTF-8"); 

В PHP вы можете получить данные:

$name = urldecode($_GET['name']); 
Смежные вопросы