我正在制作一个PHP脚本,我正在制作一个安装页面。在运行安装脚本之前,用户必须编辑配置文件并输入其数据库凭据(他们必须先创建数据库)。
安装脚本首先检查它们是否符合要求。如果他们有,则显示“导入表”按钮。这是我遇到问题的地方。这是我的代码:
<?php
if (isset($_POST['step2'])) {
if (isset($success_php, $success_mysqli, $step_1_complete)) {
// Import SQL tables
$sql = ("
CREATE TABLE `banned_ips` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(15) NOT NULL,
`reason` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ip` (`ip`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
");
if ($db->execute($sql)) {
$success_import = true;
$step_2_complete = true;
}
$db->close();
}
}
}
?>
我正在考虑直接从.sql
文件加载它,但是我试图使脚本在不同的服务器上兼容,因此,我选择这样查询。
我要问的是我的上述查询是否存在问题,如果是,我该如何解决。在我单击按钮进行测试时,不会创建表及其列。
答案 0 :(得分:1)
(关闭问题并标记为已解决)
您的表格创建代码签出。正如我在我的文章中所说,您的代码依赖于您设置的条件语句。
如果您使用表单(似乎很明显),请检查您的变量是否已正确设置/命名。
我也在质疑isset($success_php, $success_mysqli, $step_1_complete)
,所以仔细检查一切。
“@ Fred-ii-谢谢,错误是因为在尝试执行之前没有设置两个变量。”
在生产中将错误报告添加到文件的顶部。
error_reporting(E_ALL);
ini_set('display_errors', 1);
另外,我引用John Conde:
“如果列是主键,则不需要唯一键。它们已经是唯一的。”