嗯,这段代码在PHP 5.6.15下运行得非常好,但是在我使用PHP 5.5.30的Web服务器上,它在第19行给出了错误。
<?php
//Classe usada para enviar informações do banco de dados ou do servidor SRCDS.
class sendInfo{
//Função usada para arrumar os tempos irregulares de determinado mapa no banco de dados do ckSurf.
function fixMapRecords($map, $steamid){
try {
$db = dbConnection::getConnection();
//Pega o tempo do usuário chave.
$stmt = $db->prepare("SELECT runtimepro FROM ck_playertimes WHERE mapname=:targetmap AND steamid=:targetsteamid;");
$stmt->bindValue(':targetmap', $map, PDO::PARAM_STR);
$stmt->bindValue(':targetsteamid', $steamid, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
//Remove todo tempo que é menor do que o do usuário chave.
foreach ($result as $pro) {
$protime = $pro['runtimepro'] - 0.0001;
$stmt2 = $db->prepare("DELETE FROM ck_playertimes WHERE mapname =:targetmap AND runtimepro<:targettime");
$stmt2->bindValue(':targetmap', $map, PDO::PARAM_STR);
$stmt2->bindValue(':targettime', $protime, PDO::PARAM_STR);
$stmt2->execute();
$result2 = $stmt2->fetchAll(PDO::FETCH_ASSOC);
}
//Deu tudo certo e os tempos foram removidos, redirecione para a página de sucesso.
header('Location: ../../messages/success.php');
}catch(PDOException $ex){
//Ocorreu algo de errado, redirecione para a página de erro.
header('Location: ../../messages/error.php');
}
}
}
?>
这是我的数据库连接类:
class dbConnection{
protected static $db;
private function __construct() {
try {
self::$db = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_DATABASE.';charset=utf8', DB_USER, DB_PASSWORD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
self::$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
header('Location: messages/error.php');
}
}
public static function getConnection() {
if (!self::$db) {
new dbConnection();
}
return self::$db;
}
}
所以我一直试图找出过去3个小时的问题,完全不知道。
*我试图看到任何异常,但它只是在第一个代码块的第19行死掉,所以没有消息。
**在第二个代码块上模拟准备好的声明是出于某些原因,不让我读取异常,删除它并且可以赞美太阳。
答案 0 :(得分:0)
好的,我忘记向我的数据库用户授予DELETE权限,问题已修复。