php - 使用 PHP 循环向 MySQL 表添加多列

标签 php mysql loops alter

我的目标

向 MySQL 表中添加多个列。我有两个问题:

1)怎么做

2) 这是个坏主意吗?如果是,为什么?

我想这样做的原因:

我有一个表单,其中包含一组系统命名的字段(例如 field_1 field_2 等)。我想将该数据发布到页面并将其存储在 mysql 表中,我希望字段输入相应名称的列(即列名为 field_1 field_2 等)

与其手动为每个字段名称手动创建一个列,循环任务似乎很明显。

然而,研究herehere似乎告诉我这种方法会引起人们的恐惧,但我没有找到实际的解决方案。

我的尝试:

$mysqli = new mysqli("localhost","user","password","db");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}    

$i = 1;
while ($i <= 14)
{
    $column = 'field_'.$i;
    $sql= '"ALTER TABLE supply ADD '.$column.' VARCHAR(45)"';
    $mysqli->query($sql);
    printf("Affected rows (ALTER): %d\n", $mysqli->affected_rows);
$i++;
}

这似乎运行没有错误,但是受影响的行消息给我(每个循环,所以其中 14 个):

Affected rows (ALTER): -1

并且未添加列。

任何人都可以告诉我我的错误,或者更好的调试错误的方法吗?此外,如果这是不明智的做法,您能否解释一下为什么以及我应该考虑改为做什么?谢谢。

最佳答案

那是因为 affected_rows 是在您仅使用语句时设置的:

  • 插入
  • 更新
  • 替换
  • 删除

它处理行,处理表中的数据。

当您使用 ALTER 时,您的结果应该是 truefalse,因为您不处理数据,您只是编辑结构你的 table 。

$result = $mysqli->query($sql) ;
if ($result){
  echo "Table is updated. New column {$column} added" ;
}

另外,这里正确的 SQL 应该是:

$sql = "ALTER TABLE supply ADD {$column} VARCHAR(45) ; " ;

关于php - 使用 PHP 循环向 MySQL 表添加多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18725346/

相关文章:

php - 许多测试用例覆盖一个功能 - phpunit

javascript - 更改时重新生成下拉选项

javascript - 为什么 CoffeScript 不是 "reusing"循环变量?

jquery - 使用带有 jquery 函数的数组并循环遍历它

php - While 循环语法错误(无限循环)

javascript - 通过 PHP、JSON 和 Javascript 将用户特定数据插入 HTML

php - 使用composer php避免依赖

php - 如何在下拉列表中显示第一个字符

javascript - jQuery PHP Mysql jSon 循环显示数据

php - Laravel 查询 : orWhere: double condition