2016-08-02 113 views
1

嗨,当我试图为表中的主键传递一个空值,它给了我一个错误,它不会创建/更新。 例如,说id是自动增量的主键 INSERT INTO client(id,fname,lname)VALUES('','bob','smith')将不起作用。PHP的mysql自动增量传递BLANK到数据库

如何让自动增量的主键传递一个空值?

下面

是我的代码的一部分:

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 Client

+2

可以忽略'id'列,如果它是自动递增。或者你可以传递'NULL' – Ahmad

+0

如果我必须有'id'列呢?有什么办法可以传入一个空白,它不会给我一个错误? –

回答

1

如果您的ID字段是主键和自动增量,则无需在插入查询中传递它。删除id字段,并尝试插入其他字段,它将正常工作。

您的查询应该是这样的:

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

在地方:

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