我是SQL和PHP的新手。我想在数据库中创建一个带有循环的SQL表,其中列数为' Q'。请帮助我理解下面代码中的错误,因为它返回的表只有一个列名Q1。感谢。
ini_set('max_execution_time', 120);
$i = 1;
while ($i <= $QNos){
$column = 'Q'.$i;
$sql= "CREATE TABLE IF NOT EXISTS answerkey_$Test_ID ($column
VARCHAR(5))";
$result = mysqli_query($link,$sql) or die ("ERROR: in Add columns" .
mysqli_error($link));
$i++;
}
答案 0 :(得分:0)
CREATE TABLE
循环中有while
个语句。
你还为它添加了一个IF NOT EXISTS
子句,当while
循环内的那行代码被发送到数据库并运行它时,它会执行以下操作。
answerkey_$Test_ID
是否存在
如果你没有IF NOT EXISTS
它只会创建表,仍然只有一个列,第一次执行语句,那么,每次在while
循环运行中的代码,MySql会抛出错误,PHP对该错误的处理取决于您的配置以及如何处理它,但是,您仍然会得到一个只有一列的表。
在CREATE TABLE
循环之外取while
语句,你应该只在循环中添加一个列,如下所示:
ini_set('max_execution_time', 120);
$sql= "CREATE TABLE IF NOT EXISTS answerkey_$Test_ID (Q1 VARCHAR(5))";
$result = mysqli_query($link,$sql) or die ("ERROR: in Add columns" .
mysqli_error($link));
// I'm assuming you want to start the columns at 1
$i = 2;
while ($i <= $QNos) {
$column = 'Q'.$i;
$sql= "ALTER TABLE answerkey_$Test_ID ADD COLUMN $column VARCHAR(5))";
$result = mysqli_query($link,$sql) or die ("ERROR: in Add columns" .
mysqli_error($link));
$i++;
}