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 にエコーしている可能性があり、ブラウザは空白を 1 つのスペースにまとめています。

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 に答える