Php ALTER TABLE和INSERT INTO/VALUES之间的列号不一致
我想问一个关于createtable、altertable、UPDATE/SET/WHERE的问题,因为当涉及主键时,我完全不知道如何使用这些命令,而且我从不同的人那里得到了不同的建议。最初,我建立了与数据库的连接,并在一个名为“creation.php”的文件中创建了一个表:Php ALTER TABLE和INSERT INTO/VALUES之间的列号不一致,php,mysql,sql,sql-server,Php,Mysql,Sql,Sql Server,我想问一个关于createtable、altertable、UPDATE/SET/WHERE的问题,因为当涉及主键时,我完全不知道如何使用这些命令,而且我从不同的人那里得到了不同的建议。最初,我建立了与数据库的连接,并在一个名为“creation.php”的文件中创建了一个表: $con=mysqli_connect("localhost","root","","Accommodation"); $sql="CREATE TABLE Hotels(Name CHAR(3
$con=mysqli_connect("localhost","root","","Accommodation");
$sql="CREATE TABLE Hotels(Name CHAR(30),City CHAR(30))";
我的第二个文件名为“hoteldetails.php”,它生成一份调查问卷,询问酒店客人他们住过的酒店的名称以及酒店所在的城市。“hoteldetails.php”中的用户数据由“processhoteldetails.php”处理,该文件(未以完整形式提供)包含以下内容:
session_start();
$sessionID = $_SERVER['REMOTE_ADDR'] . " " .
date("Y-m-d H:i:s",time());
$_SESSION['sessionID']=$sessionID;
$sql = "ALTER TABLE Hotels
ADD COLUMN (
`Name` VARCHAR(30),
`City` VARCHAR(30));";
$sql="INSERT INTO Hotels (SessionID, Name, City)
VALUES ('$sessionID','$name', '$city')";
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
数据处理后,用户连接到另一个网页,该网页由一个名为“hotelRecommension.php”的文件生成,该网页询问用户是否会向其他人推荐酒店,并给出评级。“HotelRecommension.php”由“ProcessHotelRecommension.php”处理,如下所示(仅部分代码):
当我回答“hoteldetails.php”中的问题并单击SUBMIT时,我会收到一条错误消息:“错误:字段列表中不存在列SessionID”。(我甚至无法回答“hotelRecommension.php”中的问题,因为这个错误阻止我访问该页面)。但除此之外,我想问以下问题:
1) 我真的需要“processhoteldetails.php”中的ALTER TABLE命令吗?还是这是多余的
2) 在“processhoteldetails.php”中,我有一个“ALTERTABLE HOTES ADD COLUMN”语句,它添加了两列。但是,在下一行中,我有一个“INSERT INTO HOTES VALUES”语句,它有三列(额外的一列是主键SessionID)。这让我很困惑。我如何让SQL机器更改一个表,使其具有两列,然后将值插入到具有三个值的同一个表中?这似乎完全不一致。这就是为什么我收到一个错误,说字段列表中不存在会话ID的原因吗?我真的希望你们中的一些SQL专家能够对t他的原因无论我做什么,错误信息总是不断出现,阻止我进入下一阶段
name
和city
添加到Hotels
中,因为它们已经在您的CREATE
语句中的表中。这是多余的SessionID
字段,然后才能在CREATE
或ALTER
中进行填充现在还不清楚为什么要以这种方式进行设置,您可能应该先创建一个包含所有相关字段的表,然后去掉多个添加字段的
ALTER
语句。Goat,感谢您为我做了这么多的清理。我现在比半小时前了解得更多。为什么要标记这个?你读过标签的定义了吗?
session_start();
$sessionID = $_SESSION['sessionID'];
if($sessionID == "") {
$sessionID = $_SERVER['REMOTE_ADDR'] . " " . date("Y-m-d H:i:s",time());
$_SESSION['sessionID']=$sessionID;
}
$sql = "ALTER TABLE Hotels
ADD COLUMN (
`Recommendation` VARCHAR(150),
`Rating` SMALLINT(5));";
mysqli_query($con,$sql);
$sql = "UPDATE Hotels
SET `Recommendation` = '$recommendation',
`Rating` = '$rating'
where sessionID = '$sessionID'";