PHP mysql 自动递增传递 BLANK 到数据库
PHP mysql auto increment passing BLANK into database
您好,当我试图为 table 中的主键传递空白值时,它给了我一个错误,它不会创建/更新。
例如,假设 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
}
还有很多代码,但我无法 post 全部放在这里。
我试过 array_shift() 去掉第一个键 id 但它给了我一个错误。整个代码在一个名为 Client
的 class 中
如果你的 id 字段是主键并且自动递增那么不需要在插入查询中传递它。删除 id 字段并尝试插入其他字段它会正常工作。
您的查询应该是这样的:
INSERT INTO client (fname, lname) VALUES ('bob', 'smith')
代替:
INSERT INTO client (id, fname, lname) VALUES ('', 'bob', 'smith')
您好,当我试图为 table 中的主键传递空白值时,它给了我一个错误,它不会创建/更新。 例如,假设 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
}
还有很多代码,但我无法 post 全部放在这里。 我试过 array_shift() 去掉第一个键 id 但它给了我一个错误。整个代码在一个名为 Client
的 class 中如果你的 id 字段是主键并且自动递增那么不需要在插入查询中传递它。删除 id 字段并尝试插入其他字段它会正常工作。
您的查询应该是这样的:
INSERT INTO client (fname, lname) VALUES ('bob', 'smith')
代替:
INSERT INTO client (id, fname, lname) VALUES ('', 'bob', 'smith')