PHP MSSQL变量不起作用?

时间:2012-11-22 10:27:02

标签: php sql-server variables

非常困惑,可能忽视了一些事情,但有些想法会受到赞赏!

我的查询如下:

$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' 

它像魅力一样运行,并返回我期待的结果。

总而言之,我已经迷茫了......!

2 个答案:

答案 0 :(得分:1)

我有根据的猜测是$username不包含您的想法。它可能有一个制表符或多个空格,但您可能会将其回显到HTML中,浏览器会将空白空间折叠到一个空格中。

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

var_dump($username);

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

var_dump(bin2hex($username));

答案 1 :(得分:0)

将查询更改为

$usernamequery = "select username + ' ' + surname as fullname, userid from users where fullname = '$username'";