有没有办法可以询问所选列是否为空,php应该在输入中添加“required”(html5)值?
试图概述这个想法:
$vys = mysqli_query($db, "some query here");
while($arr = mysqli_fetch_assoc($vys)){
echo "<input type='text' name='".$arr['name of column']."' value='' ".(canBeNull($arr['name of column']) ? "require" : "")." />";
}
在此之后,某些“INSERT VALUES(...) INTO table
”将会跟随..此示例应该是“echo
”表中的所有列,以便用户可以填充它们。是的,我知道,可以使用mysqli_fetch_assoc处理的唯一查询是“SELECT * FROM column
”,但我认为这对注册表格非常有用,在注册表单时注册新用户,名称和姓氏是强制性的(NOT NULL
列),但昵称是可选的(NULL
列)。当有数十个输入字段应该非常节省时间。
难道你不知道,这些东西怎么办?
答案 0 :(得分:0)
您可以事先添加SHOW COLUMNS FROM table
查询以获取列列表。然后有一个Null列,可以设置为Yes或No。
答案 1 :(得分:0)
如果您执行以下查询:
$q = $this->prepare("SHOW COLUMNS FROM `$table`");
$q->execute();
它返回一个类似的数组:
Array
(
[0] => Array
(
[Field] => dataid
[0] => dataid
[Type] => int(11)
[1] => int(11)
[Null] => NO
[2] => NO
[Key] => PRI
[3] => PRI
[Default] =>
[4] =>
[Extra] => auto_increment
[5] => auto_increment
)
[1] => Array
(
[Field] => text
[0] => text
[Type] => varchar(255)
[1] => varchar(255)
[Null] => NO
[2] => NO
[Key] =>
[3] =>
[Default] =>
[4] =>
[Extra] =>
[5] =>
)
)
你可以这样检查一下。似乎这应该被融入到php的业务逻辑中,而不必检查db可能是类中的属性,在构造中将$ notNull设置为true
答案 2 :(得分:0)
Mysqli有额外的方法来从查询中获取元数据。 mysqli_stmt::result_metadata
实施例
$stmt = $mysqli->prepare("SELECT id, name FROM friends");
$stmt->execute();
/* get resultset for metadata */
$result = $stmt->result_metadata();
/* retrieve field information from metadata result set */
$fields = $result->fetch_fields(); // array of std objects
并检查哪个字段可以为空。
(!($field->flags & MYSQLI_NOT_NULL_FLAG))
echo $field->name;
其他标志可以在这里获得:Predefined Constants