MySQL在控制台中工作,但从PHP执行时会出现500个内部服务器错误

MySQL在控制台中工作,但从PHP执行时会出现500个内部服务器错误,php,mysql,innodb,Php,Mysql,Innodb,我有一个小的php文件,它只是在数据库中创建表。我花了好几天的时间试着调试它,结果它把我难住了。它发出一个丑陋的HTTP错误500(内部服务器错误):当服务器试图满足请求时遇到意外情况。当我执行查询时但是,当我打印出查询并将其粘贴到数据库中时,效果很好。 我还注意到,手动输入查询时,“表已经存在”会闪烁,但会消失并快速工作。与此问题类似,但我尝试过删除和重新创建数据库,但没有成功。如果有人能帮忙,我将不胜感激。下面是php代码 $users = 'CREATE TABLE users (

我有一个小的php文件,它只是在数据库中创建表。我花了好几天的时间试着调试它,结果它把我难住了。它发出一个丑陋的
HTTP错误500(内部服务器错误):当服务器试图满足请求时遇到意外情况。
当我执行查询时但是,当我打印出查询并将其粘贴到数据库中时,效果很好。

我还注意到,手动输入查询时,“表已经存在”会闪烁,但会消失并快速工作。与此问题类似,但我尝试过删除和重新创建数据库,但没有成功。如果有人能帮忙,我将不胜感激。下面是php代码

$users = 'CREATE TABLE users (
        id int UNSIGNED NOT NULL AUTO_INCREMENT,
        PRIMARY KEY(id),
        username varchar(30) NOT NULL, UNIQUE(username),
        password varchar(30) NOT NULL,
        email varchar(50) NOT NULL, UNIQUE(email),
        confirmation_code int NOT NULL,
        confirmation_tries int NOT NULL
    ) ENGINE=InnoDB';

$players = 'CREATE TABLE players (
        id int UNSIGNED NOT NULL,
        FOREIGN KEY(id) REFERENCES users(id),
        cost int UNSIGNED NOT NULL,
        strategy TINYINT UNSIGNED NOT NULL,
        age int UNSIGNED NOT NULL,
        %s
    ) ENGINE=InnoDB';
$records = array();
for ($i = 0; $i < NUM_RECORDS; $i++) {
    $records[$i] = sprintf('record_%d int UNSIGNED NOT NULL', $i);
}
$players = sprintf($players, implode(', ', $records));

$kingdoms = 'CREATE TABLE kingdoms (
        id int UNSIGNED NOT NULL,
        FOREIGN KEY(id) REFERENCES users(id),
        location int UNSIGNED NOT NULL,
        building text NOT NULL,
        level int UNSIGNED NOT NULL,
        troops int UNSIGNED NOT NULL
    ) ENGINE=InnoDB';

$inboxes = 'CREATE TABLE inboxes (
        recipientID int UNSIGNED NOT NULL,
        FOREIGN KEY(recipientID) REFERENCES users(id),
        messageID int UNSIGNED NOT NULL AUTO_INCREMENT,
        PRIMARY KEY(messageID),
        message text NOT NULL,
        date DATETIME NOT NULL
    ) ENGINE=InnoDB';

$lastActions = 'CREATE TABLE last_actions (
        id int UNSIGNED NOT NULL,
        FOREIGN KEY(id) REFERENCES users(id),
        history text
    ) ENGINE=InnoDB';

$news = 'CREATE TABLE news (
        id int UNSIGNED NOT NULL,
        FOREIGN KEY(id) REFERENCES users(id),
        entries text
    ) ENGINE=InnoDB';

/*
$dbh->exec($users);
$code = $dbh->errorCode();
if ($code !== '00000') {
    var_dump($code);
    echo '111111';
    exit;
}
$dbh->exec($players);
$code = $dbh->errorCode();
if ($code !== '00000') {
    var_dump($code);
    echo '22222';
    exit;
}
$dbh->exec($kingdoms);
$code = $dbh->errorCode();
if ($code !== '00000') {
    var_dump($code);
    echo '33333';
    exit;
}
$dbh->exec($inboxes);
$code = $dbh->errorCode();
if ($code !== '00000') {
    var_dump($code);
    echo '44444';
    exit;
}
$dbh->exec($lastActions);
$code = $dbh->errorCode();
if ($code !== '00000') {
    var_dump($code);
    echo '555555';
    exit;
}
$dbh->exec($news);//
$code = $dbh->errorCode();
if ($code !== '00000') {
    var_dump($code);
    echo '666666';
    exit;
}//*/
echo $users . ";" . $players . ";" . $kingdoms . ';' . $inboxes . ';' . $lastActions .';' . $news;
$users='创建表用户(
id int无符号非空自动增量,
主键(id),
用户名varchar(30)不为空,唯一(用户名),
密码varchar(30)不为空,
电子邮件varchar(50)不为空,唯一(电子邮件),
确认代码int不为空,
确认输入不为空
)引擎=InnoDB';
$players='创建表播放器(
id int无符号非空,
外键(id)引用用户(id),
cost int UNSIGNED NOT NULL,
策略TINYINT UNSIGNED NOT NULL,
年龄整型无符号非空,
%
)引擎=InnoDB';
$records=array();
对于($i=0;$iexec($users);
$code=$dbh->errorCode();
如果($code!='00000'){
var_dump($code);
回声‘111111’;
出口
}
$dbh->exec($players);
$code=$dbh->errorCode();
如果($code!='00000'){
var_dump($code);
回音‘22222’;
出口
}
$dbh->exec($dbh);
$code=$dbh->errorCode();
如果($code!='00000'){
var_dump($code);
回声'33333';
出口
}
$dbh->exec($inbox);
$code=$dbh->errorCode();
如果($code!='00000'){
var_dump($code);
回音‘44444’;
出口
}
$dbh->exec($lastActions);
$code=$dbh->errorCode();
如果($code!='00000'){
var_dump($code);
回声‘555555’;
出口
}
$dbh->exec($news)//
$code=$dbh->errorCode();
如果($code!='00000'){
var_dump($code);
回音‘666666’;
出口
}//*/
echo$users。";" . $球员。";" . $王国$收件箱。“;”$最后的行动$新闻;
HTTP错误500(内部服务器错误)是HTTP请求的错误响应。
使用mysql\u error或您正在使用的任何东西来响应mysql\u query的响应,以获取错误。或检查错误日志。 它并不完全由mysql返回

如果您的错误报告已关闭,请将其打开

error_reporting( E_ALL | E_STRICT ); 
ini_set( 'display_errors', 1 )

添加错误报告(E|u ALL | E|u STRICT);ini设置(“显示错误”,1);检查错误日志,它可能是PHP代码、htaccess等中的某个内容。您应该a)检查错误日志中的错误,b)向我们展示一段具有该行为的最小代码,而不是这件大事(大部分都被评论掉了?)@MaxSem谢谢-又花了几个小时,但最终解决了这个问题。我的主机出现了一些问题。如果你想作为答案发布,我会选择它作为更正。
错误报告…
部分有所帮助,但这是早期用户提供的。此外,我没有使用过时的
mysql…
函数,而是使用PDO连接和statements。仍然会选择它,但另一个家伙是第一个。对不起!