首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文本文件中的查询创建数据库中的表

问从文本文件中的查询创建数据库中的表
EN

Stack Overflow用户
提问于 2014-11-13 14:53:14
回答 1查看 1.4K关注 0票数 0

我有下面的PHP页面来使用文本文件创建一个表。

table_create.php

代码语言:javascript
复制
<?php
include $db;
$query_file = "sql.txt";

$fp    = fopen($query_file, 'r');
$sql = fread($fp, filesize($query_file));
fclose($fp); 

$retval = mysql_query($sql);
if(! $retval )
{
  die("Could not create the tables<br>");
}
echo "Table created successfully<br>";
?>

sql.txt

代码语言:javascript
复制
CREATE TABLE ht_account (
  id int(11) NOT NULL AUTO_INCREMENT,
  date date NOT NULL,
  type varchar(50) NOT NULL,
  mode varchar(50) NOT NULL,
  party varchar(50) NOT NULL,
  payee varchar(50) NOT NULL,
  rate decimal(13,2) NOT NULL,
  box int(11) NOT NULL,
  amount decimal(13,2) NOT NULL,
  token varchar(50) NOT NULL,
  remarks varchar(50) NOT NULL,
  user varchar(50) NOT NULL,
  user_confirm varchar(50) NOT NULL,
  status varchar(50) NOT NULL);

CREATE TABLE ht_bank (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(50) NOT NULL,
  ac_no varchar(50) NOT NULL,
  address varchar(50) NOT NULL);

CREATE TABLE ht_user_role (
  id int(11) NOT NULL AUTO_INCREMENT,
  value varchar(50) NOT NULL);

当我试图在sql.txt文件中创建一个表时,代码工作得很好。例如:

代码语言:javascript
复制
CREATE TABLE ht_account (
  id int(11) NOT NULL AUTO_INCREMENT,
  date date NOT NULL,
  type varchar(50) NOT NULL,
  mode varchar(50) NOT NULL,
  party varchar(50) NOT NULL,
  payee varchar(50) NOT NULL,
  rate decimal(13,2) NOT NULL,
  box int(11) NOT NULL,
  amount decimal(13,2) NOT NULL,
  token varchar(50) NOT NULL,
  remarks varchar(50) NOT NULL,
  user varchar(50) NOT NULL,
  user_confirm varchar(50) NOT NULL,
  status varchar(50) NOT NULL);

但是,当我尝试创建多个表时,它不会创建任何表。我怀疑sql.txt中的格式可能不正确。

EN

回答 1

Stack Overflow用户

发布于 2014-11-13 14:59:55

几乎可以肯定,这种格式是正确的,但是mysql_query不能处理多个查询:

mysql_query()向与指定link_identifier相关联的服务器上的当前活动数据库发送唯一查询(不支持多个查询)。

最好使用mysqli函数,因为mysql函数对于PHP5.5不推荐,而且mysqli有您需要的函数mysqli_multi_query。

如果仍然希望使用mysql函数,则可以执行以下操作:

代码语言:javascript
复制
$sql_array=explode(';',$sql);
foreach ($sql_array as $s) {
   if(! mysql_query($s)){
      echo mysql_error()."<br>";
   }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26911706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档