MySQL查询在5.0.10上运行,但在5.1.73上没有

时间:2014-10-09 13:50:55

标签: php mysqli

我有以下代码:

/// GENERATE SQL FOR LOGIN
$sql_login = "
    SELECT 

    users.id,
    users.email,  
    users.first_name, 
    users.last_name,  

        users.access_early_years,
        users.access_early_years_news,
        users.access_early_years_meetings,
        users.access_early_years_bpn,
        users.access_primary,
        users.access_primary_news,
        users.access_primary_meetings,
        users.access_primary_bpn,
        users.access_secondary,
        users.access_secondary_news,
        users.access_secondary_meetings,
        users.access_secondary_bpn,
        users.access_special,
        users.access_special_news,
        users.access_special_meetings,
        users.access_special_bpn,
        users.access_post_16,
        users.access_post_16_news,
        users.access_post_16_meetings,
        users.access_post_16_bpn,

    users.access_la_admin,
    users.last_login,
    users.login_count,
    users.centre_id,
    centres.name,
    centres.email AS centre_email,
    centres.active

    FROM users 

    INNER JOIN centres
    ON users.centre_id = centres.id

    WHERE 
    users.email = ? 
    AND 
    users.password = ? 
    LIMIT 1
";

echo $sql_login;

// PREPARE THE STATEMENT
$stmt_login = $conn->prepare($sql_login);
if($stmt_login === false) {
  trigger_error('Wrong SQL: ' . $stmt_login . ' Error: ' . $conn->error, E_USER_ERROR); 
  exit();
}

// BIND THE PARAMETERS... s = string, i = integer, d = double,  b = blob */
$stmt_login->bind_param('ss',$username,$password);

// EXECUTE STATEMENT
$stmt_login->execute();

$stmt_login->bind_result(

    $user_id,
    $username,
    $first_name,
    $last_name,
        $access_early_years,
        $access_early_years_news,
        $access_early_years_meetings,
        $access_early_years_bpn,
        $access_primary,
        $access_primary_news,
        $access_primary_meetings,
        $access_primary_bpn,
        $access_secondary,
        $access_secondary_news,
        $access_secondary_meetings,
        $access_secondary_bpn,
        $access_special,
        $access_special_news,
        $access_special_meetings,
        $access_special_bpn,
        $access_post_16,
        $access_post_16_news,
        $access_post_16_meetings,
        $access_post_16_bpn,
    $access_la_admin,
    $last_login,
    $login_count,
    $centre_id,
    $centre_name,
    $centre_email,
    $centre_active



);


// SET THE SESSIONS AND LOG THE USER IN
while ($stmt_login->fetch()) {

// DO STUFF

}

PHP版本5.4.24上的所有内容都正常运行,其中mysql 5.0.10运行IIS服务器。

但是,当使用运行plesk的mysql 5.1.73转移到PHP V5.5.14时,它不会。

它不会获取任何数据。

使用具有相同查询的phpmyadmin查询数据库时会复制此文件。一个取数据,一个不取。两个数据库都是彼此的直接副本。

我把我的头发拉了出来!有什么想法吗?

UPDATE:使用另一个准备好的语句测试,一切都很顺利(这个语句是UPDATE而不是SELECT - 所以我看不出任何数据库用户权限问题)。

1 个答案:

答案 0 :(得分:0)

好。出于某种原因, INNER JOIN 不想使用较新版本的mySQL,因此我将其更改为 LEFT JOIN ,一切正常。我仍然对为什么

感到困惑