0

从 Java-->PHP-->SQL 发送时,空格不会变为下划线

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 用户。

4

3 回答 3

0

如果您的 php 文件返回 0,则表示您的查询没有被执行。在执行查询之前,您在哪里与数据库建立连接?

于 2013-04-25T03:12:33.673 回答
0

评论:where name = '$name'

mysql_affected_rows涉及插入、更新和删除。

$r = mysql_query($query);
$num = mysql_num_rows($r);
于 2013-05-02T13:13:19.597 回答
0

将原始名称传递给 URL 而不对其进行编码是不安全的。

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

在 PHP 中,您可以获取数据:

$name = urldecode($_GET['name']);
于 2017-07-29T00:20:13.760 回答