我有以下代码:MySQL查询工作5.0.10,而不是在73年5月1日
/// 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 5.5.14版本时,它不会。
它不会获取任何数据。
当使用phpmyadmin查询数据库时,将使用相同的查询来复制此内容。一个取数据,一个没有。两个数据库都是对方的直接副本。
我拉我的头发!有任何想法吗?
更新:与另一个准备好的语句进行了测试,一切都很好(此语句是一个UPDATE而不是SELECT - 所以我看不到任何数据库用户权限问题)。
首先要验证的是,PHP不发出任何警告或错误。总是在开发/测试代码'error_reporting(E_ALL); ini_set('display_errors',1);'在脚本的顶部。 – 2014-10-09 13:52:10
这个查询在5.0/5.1之间肯定没有关系。由于拥有''''占位符,你显然不能直接复制PHPMyAdmin中的PHP代码。你确定连接的用户对两个数据库有相同的访问权吗? – 2014-10-09 13:53:36
通过删除'WHERE'子句来调试。 (这表明密码被存储在纯文本中,这是非常不安全的。请回顾一下[你如何在PHP中使用bcrypt进行密码哈希处理](https://stackoverflow.com/questions/4795385/how-do-you-use -bcrypt-for-hashing-passwords-in-php)来改进选项,特别是因为你有PHP 5.5在你的处置) – 2014-10-09 13:55:37