我正在使用PHP学习MySQL以及如何创建表格和插入数据。但我对以下代码感到特别困惑:
//SECTION 1
$sql = "CREATE TABLE ingredients (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
quanity INT(6) NOT NULL,
package INT(6) NOT NULL,
item VARCHAR(50),
cost DECIMAL(18,2),
store VARCHAR(50),
reg_date TIMESTAMP
)";
//SECTION 2
if ($conn->query($sql) === TRUE) {
echo "Table ingredients created successfully";
} else {
echo "Error creating table: " . $conn->error;
}
//SECTION 3
$conn->close();
所以我复制并粘贴了这段代码并在我的浏览器中运行,然后检查了localhost / phpmyadmin,确定已经创建了TABLE。
然而,我随后删除了代码并且仅运行了第1部分,(第2部分和第3部分已被删除且代码中不存在),假设这是我创建表所需的全部内容。刷新浏览器后,我的数据库中没有创建表。
所以我又看了一眼并想了想,可能是因为我没有关闭连接。所以这次我插入了第1节&第3节并省略了第2节。
这也没有令我惊讶的创建表。所以这就是我感到困惑的地方。为什么我需要第2节?据我所知,它只能打印出一个字符串,这对我或任何创建表格的用户来说只是一个小小的通知,但它在制作表格时似乎并不重要。那么,为什么我不能创建没有它的表?我很困惑!
答案 0 :(得分:3)
问题是不您缺少if ($conn->query($sql) === TRUE) { ... }
。 问题是您缺少$conn->query($sql)
。
$conn->query($sql)
是一个函数,如果成功则返回TRUE
。通过在此函数上调用if
,您既可以运行它并在一行中检查其返回值,而不是将它们分成两行。
因此,即使您不想运行if
语句,仍需要在自己的行上运行$conn->query($sql)
。
答案 1 :(得分:1)
让我解释一下你的代码:
在这里,您只需将类似SQL查询的字符串分配给变量 $ sql 。
//SECTION 1
$sql = "CREATE TABLE ingredients (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
quanity INT(6) NOT NULL,
package INT(6) NOT NULL,
item VARCHAR(50),
cost DECIMAL(18,2),
store VARCHAR(50),
reg_date TIMESTAMP
)";
现在您需要执行SQL脚本:
//SECTION 2
if ($conn->query($sql) === TRUE) {
echo "Table ingredients created successfully";
} else {
echo "Error creating table: " . $conn->error;
}
您不会需要 if语句,您只能这样做:
//SECTION 2
$conn->query($sql);
然而,if语句让你检查,如果查询实际执行,意味着,如果你得到 true ,查询就被执行了,你知道,表是创建的,否则,你得到一个错误$conn->error
,您可以处理并查看错误。
关闭连接,释放数据库内存
//SECTION 3
$conn->close();