Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何创建具有特定行数的MySQL表?_Php_Mysql_Pdo - Fatal编程技术网

Php 如何创建具有特定行数的MySQL表?

Php 如何创建具有特定行数的MySQL表?,php,mysql,pdo,Php,Mysql,Pdo,我想用PHP创建一个MySQL表。它应该有精确的12行和4列。第一列将是id 我正在使用此代码创建表: $sql = "CREATE TABLE `$table` ( id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), pin INT(11), country VARCHAR(30) )"; try { $db->exec($sql);

我想用PHP创建一个MySQL表。它应该有精确的12行和4列。第一列将是
id

我正在使用此代码创建表:

$sql = "CREATE TABLE `$table` (
      id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(30),
      pin INT(11),
      country VARCHAR(30)
    )";

try {
    $db->exec($sql);
    echo 'Table created!';
} catch(PDOException $e) {
    echo $e->getMessage();
}
上面的代码成功地创建了表,但我想要的是,它应该创建12行,并将
id
列填充到12行。其余列应为空。

请尝试此编码

$sql = "CREATE TABLE `$table` (
  id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(30),
  pin INT(11),
  country VARCHAR(30)
)";
mysql_query($sql);

    for($i=1;$i<=12;$i++) {
   $insert = "INSERT INTO `$table` (id,name,pin,country) VALUES ($i,'','','') ";
   mysql_query($insert);
}
$sql=“创建表”$TABLE”(
id INT(11)无符号自动递增主键,
姓名:VARCHAR(30),
内部引脚(11),
乡村瓦查尔(30)
)";
mysql_查询($sql);

对于($i=1;$i您的代码只创建了包含4列的空表。然后您需要
向该表插入一些数据:

$sql = 'INSERT INTO {$table} (name, pin, country) VALUES ';
$inserts = [];

for ($i = 0; $i < 12; $i++) {
    $inserts[] = "('', 0, '')"; // Or any other values. No ID, because it's auto-incremented
}

$db->exec($sql.implode(', ', $inserts));
$sql='INSERT INTO{$table}(名称、pin、国家/地区)值';
$inserts=[];
对于($i=0;$i<12;$i++){
$inserts[]=“('',0',)”;//或任何其他值。没有ID,因为它是自动递增的
}
$db->exec($sql.infrade(',',$inserts));

你必须在表中插入12行。你不能用12行创建它。我认为这不能用MySql完成。如果表的行数超过12行,你可以通过编程检查每一次插入,如果超过12行,则什么也不做。你也可以在MySql中创建触发器(不确定MySql是否有触发器psql有触发器)所以每次插入之前的触发器计数行不使用
mysql\u*
函数,查询也可以优化为只插入一次为什么?有什么特殊原因吗?
mysql\u*
不推荐,每次迭代插入都非常慢。@aruncbe83不要使用
mysql\u*
,应该使用
mysqli
PDO
>最好使用一个准备好的语句并多次执行。@Daniels118我不这样认为,因为您不添加变量,只添加空条目。如果您只能执行一次insert,为什么还要执行多次呢?因为对于更多的insert,串接字符串可能会很重,而且sql解析器必须解释多个insertle重复同一个查询,这是一个无用的开销。我对您的解决方案进行了升级,因为情况并非如此,我的评论是针对更一般的情况。