我想创建一个包含这样字段的动态表。
table_name: book_list
book1(int(2)) book2(int(2)).... book44(int(2)
我有这样的PHP代码。
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
for($i=1;$i<=44;$i++){
$sql = 'CREATE TABLE IF NOT EXISTS `book_list` (
book_'.$i. 'int(2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1';
mysql_select_db('book_db');
$retval = mysql_query( $sql, $conn );
}
?>
上面的代码需要进行一些调整,这是为了生成动态表。
任何帮助都会更加明显。
谢谢, Kimz
PS:我知道MYSQL正在贬值,但这仍然是我的客户端,他只想要mysql而不是pdo或mysqli。看起来很疯狂但仍然答案 0 :(得分:1)
您应该开始在for循环之外构建查询,然后循环遍历所需的字段。这样的事情(未经测试):
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
$sql = 'CREATE TABLE IF NOT EXISTS `book_list` (';
for($i=1;$i<=44;$i++){
$sql .= 'book_'.$i. ' int(2) NOT NULL';
if($i < 44) {
$sql .= ', ';
}
}
$sql .= ') ENGINE=InnoDB DEFAULT CHARSET=latin1';
mysql_select_db('book_db');
$retval = mysql_query( $sql, $conn );
?>
答案 1 :(得分:0)
您可以使用一些ORM工具,例如http://redbeanphp.com/
但最好的选择是使用3NF的数据库。
而是将bookNo作为列添加到表中,添加列号
样品。
CREATE TABLE IF NOT EXISTS `book_list` (
number int(2) NOT NULL
book int(2) NOT NULL
)