【问题标题】:Add a new column to an existing table in MySql using PHP with PDO使用 PHP 和 PDO 将新列添加到 MySql 中的现有表
【发布时间】:2013-11-29 08:55:42
【问题描述】:

到目前为止,我已经得到了这个代码:

$column_name = strtolower($_POST['<user input>']);
if(!preg_match('/[^A-Za-z0-9.#\\-$]/', $column_name)){
    if(!empty($column_name)){
    $st = $db_pdo->prepare("DESCRIBE <table name>");
    $st->execute();
    $st = $st->fetchAll(PDO::FETCH_COLUMN);
    $compare = $st;

        foreach($compare as $key){
            if($key === $column_name){
                die('Project name already exists. Please select a different name.');
            }
        }

    $st = $db_pdo->prepare("ALTER TABLE emails ADD <column name> varchar");
    $st->execute();  

  } else { echo 'Project name is empty.';}     
} else { echo 'Project name can only contain letters and numbers.';}

简要概述如下:

检查列名中的无效字符。 通过用户输入检查列名是否不为空。 如果表已经存在,则终止该页面。

我是 PHP 和 MySQL 的新手,如果这些问题看起来像基本问题,我真的很抱歉。

我要做的是在一个类型为 varchar 长度为 60 的表中插入一个新列。就是这样,不需要其他属性。

我似乎无法找到有关如何使用 Google 执行此操作的适当解释,因此我希望有一些伪代码和一些解释。

到目前为止,我得到了这个:

$st = $db_pdo->prepare("ALTER TABLE emails ADD <column name> varchar");
$st->execute();

而且不知道如何继续。

谢谢。

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:
    ALTER TABLE emails ADD <column name> varchar(60)
    

    你必须指定长度

    【讨论】:

    • ...我现在觉得很傻。谢谢,它就像一个魅力。
    • 跟进问题。我现在有这个代码: $st = $db_pdo->prepare("ALTER TABLE email ADD COLUMN :column_name varchar(60)"); $st->bindParam(':column_name', $column_name); $st->执行();但它无法创建一个新列。我在这里错过了什么
    • @user2997488 尝试在 $column_name 之后添加 PDO::PARAM_STR。但我不确定您可以使用占位符来表示表名或列名。stackoverflow.com/questions/13405392/pdo-bindparam-issue
    • 不行,不起作用:致命错误:调用未定义函数 name() => name 只是取自 ($_POST['']) 的随机值
    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    相关资源
    最近更新 更多