我正在尝试创建一个允许我使用sql和php向数据库中的表添加新列的功能。我目前有一个前端表单,用户可以在其中选择要更改的表格,并输入用于添加新列名称的框。我还想显示所选表的新版本(即附加了新列)我的前端和后端脚本如下所示。
sql10.html:
<form action="sql10.php" method="post">
<select id="category">
<option value="" disabled selected>Select your option</option>
<option id="customer" value="customer">Customer Table</option>
<option id="booking "value="booking">Booking Table</option>
<option id="bookingline" value="bookingline">Order Table</option>
<option id="package" value="package">Package Table</option>
</select>
<br><br>
Column Name: <input type="text" name="colname" placeholder="Insert New Column Name">
<br>
<input type="submit" value="Submit"> <input type="reset" value="Clear">
sql.php:
<?php
$conn = mysqli_connect("localhost", "######", "#####")
or die("Could not connect: " . mysqli_error($conn));
print "Successful Connection!";
mysqli_select_db($conn, '#####') or die ('db will not open' );
print " You have connected to the Assignment 3 database.<br>";
$category = $_POST["category"];
$newcolumn = $_POST["colname"];
$query1="ALTER TABLE $category ADD $newcolumn varchar(255)";
$query2 = "SELECT * FROM $category";
mysqli_query($conn, $query1) or die ("Invalid query");
echo "Success in database entry";
$numrows = mysqli_affected_rows($conn);
echo $numrows . "row updated<br>";
$result = mysqli_query($conn, $query) or die("Invalid query");
$num = mysqli_num_rows($result);
echo "<table border='1'><tr><th>Booking ID</th></tr>";
for($i=0; $i<$num; $i++) { //uses $num as loop end value
$row = mysqli_fetch_row($result);
echo "<tr><td>" . $row[0] . "</td></tr>";
}
echo "</table>";
mysqli_close($conn);
?>
使用此代码时,我无法为表创建新列。我的数据库由多个表组成,我希望用户能够选择他们希望添加列的表,以及输入新列的名称。谁能看出问题是什么?
答案 0 :(得分:0)
我认为您的错误是select
标记没有name
属性。请记住,提交表单时,它会使用name
属性的元素值。
因此,如果您输入HTML代码<select id="category" name="category">
,则可以使用sql.php
在$_POST["category"]
查询中捕捉其价值;也许$_POST["category"]
到空了,因此你无法执行$query1
句子。