【问题标题】:PHP mysql auto increment passing BLANK into databasePHP mysql自动增量将BLANK传递到数据库
【发布时间】:2016-08-02 09:15:02
【问题描述】:

您好,当我尝试为表中的主键传递一个空白值时,它给了我一个错误,它不会创建/更新。 例如,说 id 是具有自动增量的主键 INSERT INTO client (id, fname, lname) VALUES ('', 'bob', 'smith') 不起作用。

如何允许空白值传递给具有自动增量的主键?

下面是我的部分代码:

protected static $table_name="client";
protected static $db_fields=array('id', 'fname', 'lname');
public $id;
public $fname;
public $lname;
...more code

public function create() {

    global $database;
    $attributes = $this->sanitized_attributes();
    $sql = "INSERT INTO ".self::$table_name." (";
    $sql .= join(", ", array_keys($attributes));
    $sql .= ") VALUES ('";
    $sql .= join("', '", array_values($attributes));
    $sql .= "')"; 
    ...more code

}

还有很多代码,但我不能在这里全部发布。 我试过 array_shift() 来摆脱第一个键 id 但它给了我一个错误。整个代码都在一个名为 Client 的类中

【问题讨论】:

  • 如果id 是自动递增的,你可以忽略它。或者你可以通过NULL
  • 如果我必须有id 列怎么办?有什么方法可以让我输入一个空白并且它不会给我一个错误?

标签: php mysql database phpmyadmin


【解决方案1】:

如果您的 id 字段是主键并自动递增,则无需在插入查询中传递它。删除 id 字段并尝试插入另一个字段,它会正常工作。

您的查询应该是这样的:

INSERT INTO client (fname, lname) VALUES ('bob', 'smith')

代替:

INSERT INTO client (id, fname, lname) VALUES ('', 'bob', 'smith')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    相关资源
    最近更新 更多