0

非常困惑,可能忽略了一些东西,但有些想法将不胜感激!

我有一个查询如下:

$usernamequery = "select username + ' ' + surname as username, userid from users where username + ' ' + surname = '$username'";
$usernamestmt = sqlsrv_query( $conn, $usernamequery);
if( $usernamestmt === false ) {
 die( print_r( sqlsrv_errors(), true));
}

while( $obj = sqlsrv_fetch_object( $usernamestmt)) 
{
echo    $username1 = $obj->username;
echo    $userid = $obj->userid;
}

它不返回任何东西,但是当我回显 $usernamequery 我得到

select username + ' ' + surname as username, userid from users where username + ' ' + surname = 'Joe Bloggs' 

然后当我直接在 SQL 中运行它时,它会返回我期望的结果。

更奇怪的是,当我将 PHP 更改为实际查询时(即

select username + ' ' + surname as username, userid from users where username + ' ' + surname = 'Joe Bloggs' 

)

它运行起来就像一个魅力,并返回我期待的结果。

总而言之,我完全糊涂了……!

4

2 回答 2

1

我有根据的猜测是,$username它不包含您认为的内容。它可能有一个制表符或多个空格,但您可能会将其回显到 HTML 中,并且浏览器正在将空格折叠成一个空格。

您可以使用var_dump()检查变量的确切内容,例如:

var_dump($username);

...的,如果您需要更多详细信息,请使用bin2hex()

var_dump(bin2hex($username));
于 2012-11-22T10:39:56.837 回答
0

将查询更改为

$usernamequery = "select username + ' ' + surname as fullname, userid from users where fullname = '$username'";
于 2012-11-22T10:30:07.177 回答